Script de inicio en EC2

Creé una Amazon AMI personalizada (Fedora) ejecuta algunos scripts y luego se cierra.

El problema con AMI es que si mi código cambia, tiene que haber una forma para que la instancia de AMI obtenga los últimos scripts antes de ejecutarlos.

Escribí un guión de shell y lo puse en /etc/init.d/nt_startup

Para mantener el código actualizado, ejecuto un script de git pull Shell en mi repository de código y luego ejecuto el script.

El problema es que la git pull no parece ejecutarse cuando se inicia una instancia, pero la secuencia de commands de python funciona perfectamente. No estoy seguro de lo que me falta … aquí está el script de inicio:

 #!/bin/bash # # ec2 Startup script for EC2 machines # # chkconfig: 345 99 02 # description: Script used to issue startup and shutdown commands. # if [ "$1" = "start" ]; then /usr/scripts/code/git_latest python /usr/scripts/code/process.py exit fi if [ "$1" = "stop" ]; then #nothing exit fi 

La /usr/scripts/code/git_latest ve así:

 #pulls in the latest code from the repository cd /usr/scripts/code sudo git pull 

Debería estar bajando la última secuencia de commands process.py .

Lo extraño es que si me meto en mi instancia y ejecuto el script de inicio manualmente ( /etc/init.d/nt_startup "start" ), el script git funciona bien.

¿Me estoy perdiendo de algo?

OK, finalmente lo descubrí. Después de recorrer la salida EC2 encontré esta línea:

"Iniciando ntstartup: sudo: lo siento, debes tener un tty para ejecutar sudo"

Aparentemente, Fedora bloquea los commands sudo no tty.

Una búsqueda rápida condujo a la solución:

  1. Como root ejecuta "visudo".
  2. Encuentre la línea con "Default requiretty" y coméntelo (#Default requiretty)

Espero que esto sea útil para cualquier otra persona que se encuentre con este problema.

Tienes que poner un enlace de inicio en /etc/rc?.d. Puede usar chkconfig (8) o ntsysv (8) para ayudarlo a administrar estos directorys.