amazon-web-services github autoscaling aws-code-deploy

amazon web services - ¿Puedo usar el Despliegue de código de AWS para extraer el código de la aplicación mientras se autoescala?



amazon-web-services github (1)

CodeDeploy es una gran solución para su problema. Si se configura correctamente, puede implementarse automáticamente en las nuevas instancias de EC2 que se activan mediante la escala automática. Para que esto funcione, necesitarás tres cosas:

  1. Un grupo de Auto Scaling que inicia instancias con el último agente de host instalado y en ejecución.
  2. Un grupo de implementación de Code Deploy configurado para implementarse en ese grupo de Auto Scaling (como un grupo de Auto Scaling no por etiquetas).
  3. Una revisión de destino para desplegar automáticamente a nuevas instancias. Si no hay una revisión de destino, Code Deploy verá el lanzamiento de la instancia, pero no implementará nada.

Aquí hay un tutorial que puede usar para ayudar a comenzar: Tutorial: Uso de AWS CodeDeploy para implementar una aplicación en un grupo de auto escalado . Ese tutorial lo guiará para preparar una AMI con el agente instalado y configurar el grupo de implementación para implementar su código en nuevas instancias.

Si hornea una AMI con el agente preinstalado, deberá actualizar esa imagen periódicamente con las versiones del agente. Una vez que se haya instalado el agente, se actualizará solo, pero el Auto Scaling puede fallar y su instancia se iniciará si la versión del agente ya no es compatible con Code Deploy. Para el uso de producción real, recomendaría no elaborar una AMI y en su lugar instalar el último agente cuando se inicien sus instancias. (El tutorial debe actualizarse para usar este método pronto).

Puede configurar sus instancias para descargar y ejecutar automáticamente el último instalador en el arranque. Esencialmente, usted pega un script de shell como datos de usuario cuando crea el grupo de Auto Scaling.

Por ejemplo, probé el siguiente script en Amazon Linux (tomado de Configurar una nueva instancia de Amazon EC2 para trabajar con AWS CodeDeploy ):

#!/bin/bash yum -y update yum install -y aws-cli cd /home/ec2-user aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1 chmod +x ./install ./install auto

Debería poder pegar esto como user data cuando esté creando el grupo de Auto Scaling. Para Auto Scaling, lo configura al crear la configuración de inicio en Detalles de configuración -> detalles avanzados.

Para configurar el grupo de implementación y establecer la revisión de destino:

  1. Cree o edite un grupo de implementación para incluir el grupo de Auto Scaling. (Nota: el grupo de Auto Scaling debe existir primero para que esto funcione.)
  2. Asegúrese de que haya al menos 1 instancia en el grupo de Auto Scaling.
  3. Implemente el paquete de artefactos que desea que se implemente automáticamente en el grupo de implementación.
  4. Suponiendo que el paso 3 fue exitoso, el grupo de implementación ahora tendrá ese conjunto de paquetes como su revisión de destino. Para implementaciones automáticas, esto se convierte en la buena revisión conocida para implementar.

Las nuevas instancias que se inicien con Auto Scaling en ese grupo de Auto Scaling tendrán implementada automáticamente la revisión de destino del grupo de implementación. Las revisiones de las implementaciones manuales fallidas no se implementarán automáticamente.

Quiero escalar automáticamente la infraestructura cuando la carga sea alta. Estoy ejecutando mi infraestructura en AWS . Tengo un requisito donde necesito extraer el código de la aplicación de Github cuando ocurre la autoscaling . Como el código cambia con frecuencia, no podemos tomar una AMI y lanzar una instancia desde esa AMI . Así que quiero sacar el último código de los repositories . AWS acaba de lanzar un servicio llamado AWS CodeDeploy . ¿Cómo puedo usar este servicio para automatizar el proceso de extracción del código cuando se inician las instancias?

PS He escrito un init script para adjuntar automáticamente un EIP , una lista blanca que hace IP en diferentes grupos de seguridad y coloca la instancia en un load-balancer cuando la instancia se inicia y revoca todo cuando la instancia finaliza en la escala automática.