25 votos

Ejecutar un script en bash después de la instancia de EC2 botas

Tengo un script en una instancia de EC2 que remotamente se inicia otra instancia.

Una vez que esta instancia se ha cargado por completo (terminado de arrancar) yo quiero que se ejecute automáticamente un script de bash, ¿cuál sería la mejor manera de hacer esto?

Necesito que todo esté totalmente iniciado, básicamente el script de bash ejecuta una conversión de imágenes de secuencias de comandos (usando ImageMagick y ejecuta el "wget" comando un par de veces)

En la actualidad, la secuencia de comandos se encuentra aquí:

/home/root/beginProcess.sh

Y puedo empezar de forma manual mediante la ejecución de

bash beginProcess.sh

RHEL-6.2-motor de Arranque-EBS-i386

También hay un volumen de EBS se adjunta a este, si que ayuda, Gracias!

34voto

EEAA Puntos 66011

Yo sugeriría que, utilizando sólo los datos de usuario de la opción a ec2-run-instances. Permite dar una secuencia de comandos de algún tipo a la máquina virtual que se ejecuta en el primer arranque. Si estás usando ubuntu o debian, puede utilizar cloud-init, que pone algo de buen pulimento en el proceso. Si el uso de cloud-init, puede utilizar el [runcmd] de la sección del archivo de configuración para especificar comandos arbitrarios a ejecutar después del arranque.

Gracias a SF usuario Eric Hammond para los datos de usuario de la página. Echa un vistazo a su sitio - que tiene una gran cantidad de información sobre AWS.

Edit: Después de la re-lectura, no está claro si desea ejecutar un comando en el arranque inicial o en cada arranque. Las instrucciones anteriores sólo se aplican para el arranque inicial. Si desea ejecutar un comando en cada arranque, tiene un par de opciones - puede ejecutar un comando a través de la @reboot cron directiva, o alternativamente, usted puede agregar el script /etc/rc.local, que se ejecutará cada vez que el sistema arranca.

9voto

Eric Hammond Puntos 7707

Si se utiliza una AMI que tenía la cloud-init paquete instalado (como Amazon Linux o Ubuntu), entonces usted podría simplemente pasar el script de bash (que empieza con #!) como el usuario de archivo de datos y se ejecutará automáticamente al final del proceso de arranque.

Por ejemplo, podría ser tan simple como:

ec2-run-instances                             \
  --user-data-file /home/root/beginProcess.sh \
  --key $USER                                 \
  ami-XXXXXXXX

Aquí está el artículo de donde he introducido los datos de usuario de la secuencia de comandos de concepto, ahora disponible en los principales EC2 AMIs, como la de Amazon Linux y Ubuntu: http://alestic.com/2009/06/ec2-user-data-scripts

Por desgracia, parece que vas a querer usar un RHEL AMI. Me encontré con una copia de ese y no pude encontrar ninguna referencias a cloud-init o de usuario de ejecución de datos de secuencias de comandos en el primer arranque, ni tampoco una prueba de la misma obra.

No estoy diciendo que usted debe cambiar las distribuciones de Linux solo para esto, pero Amazon Linux está basada en RHEL, por lo que podría funcionar para usted.

He aquí un artículo que escribí que pueden ayudar a depurar tus datos de usuario de la secuencia de comandos si no funciona la primera vez: http://alestic.com/2010/12/ec2-user-data-output

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: