¿Cómo activar instancias EC2 y cargar / ejecutar un script de inicio en cada una de ellas?


Quiero automatizar el lanzamiento de un conjunto de instancias de Linux EC2.

Básicamente, quiero escribir un script / programa que :

  • Instanciar N ocurrencias de un AMI dado mío.
  • Para cada empezó ejemplo, cargar un script personalizado y dejar que el script se ejecute en la instancia.

Usando VMware, normalmente lo haría usando vmrun o el Vix SDK.

¿Cuáles son las opciones en Amazon AWS/EC2?

Author: hjpotter92, 2012-04-12

2 answers

La respuesta depende un poco de la AMI que esté ejecutando, ya que las características proporcionadas dependen completamente de la AMI.

Las AMI de Amazon Linux y las AMI oficiales de Ubuntu tienen instalado el paquete cloud-init. Esto tiene una serie de formas en las que puede activar acciones de inicio, pero la que coincide más estrechamente con su solicitud (y mi favorita porque la inventé) es el concepto de un script de datos de usuario .

Simplemente puede pasar cualquier script (comenzando con los dos caracteres #!) como los datos de usuario al iniciar las instancias EC2. Se ejecutará como root en el primer arranque de la instancia.

Para un ejemplo específico de cómo funciona esto, utilizo esta técnica exacta en mi artículo reciente: Cargando la Clave de Host ssh Conocida en el Script de datos de usuario EC2

También quería ejecutar más de una instancia EC2 con el mismo script. El comando ec2-run-instances y las API y la consola web relacionadas le permiten especificar cualquier número de instancias para comenzar con el mismo datos de usuario. Por ejemplo:

ec2-run-instances            \
  --instance-count 10        \
  --user-data-file $MYSCRIPT \
  --key $USER                \
  $SOMEAMI

Si actualmente está ejecutando una AMI que no tiene cloud-init instalado, puede hacer una de las siguientes acciones:

  • Cambie a una AMI que tenga cloud-init instalado, o

  • Cree una versión personalizada de su AMI que tenga instalado cloud-init, o

  • Escribe una más complicado guión envoltorio que hace un registro de todos los id de instancia después de que se terminase, espera a que todas las instancias para pasar a la ejecución de estado, espera a que el sshd acepte conexiones, carga el script de inicio en cada instancia y ejecuta el script de inicio en cada instancia.

 81
Author: Eric Hammond,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-12 17:08:59

Tengo un tutorial para ejecutar el script en el "cloud-init" que se ejecuta cada vez que se inicia AWS EC2.

  • Para establecer el archivo de configuración (AWS CentOS6) y

  • Ejecute los scripts cuando inicie EC2

Para establecer el archivo de configuración en Linux puede consultar configure cloud-init en AWS Linux.

Yo personalmente uso AWS VPC/EBS eso fue una configuración basada en Linux AMI, no toqué cualquier cosa en el archivo de configuración /etc/cloud/cloud.cfg pero mi script de arranque en la nube-init funciona bien.

 1
Author: Chetabahana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:18