Hay una serie de conceptos que puede aprovechar.
La clave del éxito es la automatización.
La primera opción es seguir haciendo lo que está haciendo ahora, es decir, reconstruir los EC2 con cada cambio de configuración . Solo de forma totalmente automatizada.
Como ahora está realizando actualizaciones de configuración a través de AMI, va un paso más allá y crea una tubería que, al cambiar un archivo de configuración en algún repositorio, hará lo siguiente:
- Cree automáticamente un nuevo AMI , una de las herramientas más populares para hacerlo es Packer
- Reconstruya automáticamente su flota de Nginx : ya debería tener todos los servidores Nginx en un grupo de Auto-Scaling con un Balanceador de carga de aplicaciones al frente. Si no lo hace, debería hacerlo , ya que hará que la actualización sea tan simple como actualizar la configuración de inicio de ASG y esperar a que las instancias se reconstruyan a partir de la nueva AMI.
La segunda opción es mantener las instancias en su lugar y solo implementar los archivos de configuración , sin reconstruirlos. En general, puede tratar los archivos de configuración como código e implementar los cambios de configuración de la misma manera que implementaría las versiones de código. AWS tiene muchas herramientas para ayudar con eso.
- AWS Elastic Beanstalk que utiliza Chef internamente y puede realizar un script de sus actualizaciones de Nginx de esta manera.
- AWS Code Deploy, que es una herramienta de implementación totalmente programable que se integra bien con otras partes de AWS Code Suite :
- Code Commit donde puede mantener sus archivos de configuración de Nginx en Git.
- Canalización de código que puede activar automáticamente la implementación cada vez que se actualiza un archivo de configuración en Code Commit.
- Ansible o Puppet, que son herramientas populares que no son de AWS y pueden ayudarlo a mantener todos los servidores configurados de la misma manera.
Una vez que se sienta cómodo con la automatización de estas actualizaciones de configuración de Nginx, es posible que desee extender la automatización al resto de su infraestructura.
Hay una excelente descripción general de las Opciones de implementación en AWS que le brindará una buena descripción general.
Espero que eso ayude :)