Finalmente terminé de configurar un entorno completamente funcional en AWS Opsworks para uno de nuestros proyectos y aún no lo he implementado por completo.
Después de hacer algunos ajustes en una de mis plantillas, accidentalmente envié un error de sintaxis de chef, actualicé mi repositorio de libros de cocina personalizados en las instancias en ejecución y volví a implementar mi aplicación.
A mitad de la implementación, la primera instancia obviamente falló y la segunda aún continuó con la implementación. Al intentar cargar el sitio a través del balanceador de carga, puedo ver que el sitio ya se cayó y que la implementación en la segunda instancia finalizó poco después.
Como dije, esto no estaba en producción y una vez que entremos en vivo también tendremos una pila de preparación y, con suerte, nada como esto debería suceder en vivo (es decir, errores de sintaxis del chef), pero aún así tenía curiosidad por saber si Opsworks proporciona algo que pueda puede decir: "ha fallado en una instancia; ahora deje de implementar en el resto de las instancias".
También sería bueno si hubiera una forma de recibir notificaciones cuando falla una implementación, como enviar una notificación SNS o algo similar.
Tenía curiosidad por saber cómo otras personas enfrentan situaciones como estas: cuando falla una implementación, detener la implementación en todas las instancias, notificaciones, revertir, etc. O tal vez me perdí algunas configuraciones en el panel.
Respuesta1
Lamentablemente, OpsWorks aún no admite implementaciones continuas (como CodeDeploy y Elastic Beanstalk). Por lo tanto, es difícil detener las otras instancias que podrían estar a la mitad de la ejecución de la tarea cuando falla una instancia.
Mi sugerencia es clonar su pila de producción para crear una pila de desarrollo. Tenga una rama git maestra y de producción en su repositorio de recetas, su pila de desarrollo usa la rama maestra y la producción usa la rama de producción.
Realice todo su trabajo y pruebas en la pila de desarrollo, donde no importa si implementa accidentalmente con un error de sintaxis de Chef. Una vez que haya probado sus cambios y esté satisfecho de que estén listos para implementarse, combine master en producción y ejecute la tarea en su pila de producción.