Ejecute el archivo sh cuando se inicie la instancia de Amazon EC2

Ejecute el archivo sh cuando se inicie la instancia de Amazon EC2

Tengo un archivo "sh" que inicia un servidor de nodo.

Funciona bien si corro

sh /var/www/init_node.sh

Quiero que el script se ejecute cada vez que se reinicie mi instancia (para tener un servidor de nodo en funcionamiento).

Agregué el script a mi archivo /etc/rc.local de la siguiente manera:

sh /var/www/init_node.sh 
exit 0

Sin embargo, cuando reinicio la instancia, el servidor nodejs no se está ejecutando. Es una instancia de Ubuntu 64.

Creo que no es importante, pero aquí está el contenido de mi archivo sh:

cd /var/www/myproject
eval `ssh-agent -s`
ssh-add -D
ssh-add ~/.ssh/id_rsa
git stash
git pull origin master --force
forever start express.js 

También

sh /etc/rc.local 

funciona bien

¿Algunas ideas?

Respuesta1

Tuve un problema similar con el archivo rc.local en una instancia de Amazon. Resultó que tenía un error con el script en rc.local que no permitía ejecutarlo a menos que tuviera un tty.

Entonces, ¿cómo puedo saber si recibo un error similar? Utilice cloud-init para ejecutar su script.

Para mi distribución de Amazon Linux, primero edité /etc/init.d/cloud-init-user-scripts.

Cambiar esta línea /usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure

Para siempre"

/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure

Luego cree un directorio mkdir /var/lib/cloud/data/scripts. Ahora copie el script que desea ejecutar al iniciar /var/lib/cloud/data/scripts. Asegúrese de que el bit ejecutable de sus scripts esté configurado.

Ahora debería poder ejecutar sudo /etc/init.d/cloud-init-user-scripts start... Luego podrá verificar /var/log/cloud-init.logsi hay errores.

información relacionada