¿Hay alguna manera de ejecutar un script solo una vez, al actualizar varias instancias en una pila de formación de nubes?

Gran pregunta y este podría ser un escenario probable cada vez que necesite actualizar una pila de CF. Lo que creo que realmente está diciendo es que tiene una actualización de la base de datos que necesita operar fuera de banda (o posiblemente antes de la actualización de la aplicación) y realmente no se puede ejecutar al inicio de la aplicación, ya que se ejecutaría en todos los Servidores EC2 simultáneamente.

No mencionó el tipo de script o base de datos, por lo que, hablando en general, aquí hay algunas opciones:

  1. Adjunte una única instancia EC2 (que no forme parte de ningún ASG) a su plantilla CF que inicie su secuencia de comandos y termine en el apagado.
  2. Ejecutar como una función lambda (iniciada por su plantilla CF)
  3. Inclúyalo como parte del inicio de la aplicación, utilizando la base de datos como un bloqueo temporal. En otras palabras:
    1. verifique si alguien ha bloqueado la base de datos para actualizaciones (o si incluso existe una tabla).
    2. si no, bloquéelo y continúe con las actualizaciones.
    3. si es así, espere a que se libere el bloqueo y luego omita hacer la actualización usted mismo (ya que alguien ya lo ha hecho).
    4. considere combinar con un indicador de versión de esquema de base de datos. Dado que las bases de datos tienden a ser ACID, son el lugar perfecto para almacenar este bloqueo.
  4. Inclúyalo como parte del inicio de la aplicación, pero use un mecanismo de bloqueo (podría ser algo tan simple como un archivo escrito en algún lugar que no esté sujeto a la consistencia eventual … ¡lo que deja fuera S3!)
  5. Coloque un mensaje de trabajo de actualización (tal vez con detalles o la secuencia de comandos de actualización en un archivo S3) en una cola como SQS y haga que los servidores de aplicaciones verifiquen y retiren el trabajo (único) al inicio si existe. (Por supuesto, esto podría permitirles continuar usando la base de datos a medida que se actualiza, lo que puede ser ideal o no).

(Nota: algunos de estos escenarios pueden introducir un SPOF o un punto muerto en el inicio, pero esto puede ser preferencial a una base de datos inconsistente o antigua).


También puede haber mejores lugares para hacer esto fuera de CloudFormation. También debe buscar en otros lugares para colocar esto en su flujo de trabajo, como ser activado por git commits, servidores CI como Jenkins, etc.


* plug: consulte Userify, SSH key Manager diseñado para EC2: https://userify.com

Escribe una función Lambda.

Los servicios ansibles o basados ​​en la web como webservice.management, mist.io deberían ayudar.

More Interesting

Vivo en una autocaravana a tiempo completo y no tengo una dirección física, solo un servicio de reenvío principal. ¿Hay alguna biblioteca pública donde pueda obtener una tarjeta para poder acceder a 3M Cloud and Overdrive?

¿Qué seguridad necesitamos en la computación en la nube?

¿Cuáles son algunos servidores económicos alojados en la nube?

Servicios en la nube: ¿Cuál es la mejor manera de almacenar y compartir sus archivos en línea? ¿Dropbox, Sugarsync, Google drive, Skydrive o cualquier otro?

¿Qué tipo de habilidades técnicas se requieren para ser seleccionado en Google o Amazon si alguien es de servicios en la nube?

¿Cómo calculo los costos de computación en la nube?

¿Qué nuevas habilidades de TI deben considerarse para una empresa que se muda a IaaS?

Cómo almacenar datos de usuarios de la UE en servidores en la nube que alquilo en los EE. UU. Ahora que el puerto seguro fue declarado no válido

¿Cuál es el mejor alojamiento en la nube, HostingRaja, Amazon, DigitalOcean, Linode, Google Cloud Platform u otro?

¿Cuáles son las diferencias con los servidores de Microsoft y las plataformas en la nube?

¿Cuáles son los pros y los contras de las redes definidas por software?

¿Existe la necesidad de una plataforma integrada de gestión de la nube?

¿Cuál es el costo de los servidores (servicios en la nube)?

¿Cuáles son las mejores aplicaciones de almacenamiento en la nube en Android?

Cómo ver la evolución del alojamiento en la nube en 2016