2009-02-13 34 views
6

He creado una Amazon AMI personalizada (Fedora) ejecuta algunos scripts y luego se apaga.Secuencia de comandos de inicio en EC2

El problema con AMI es que si mi código cambia, tiene que haber una forma para que la instancia de AMI obtenga las últimas secuencias de comandos antes de ejecutarlas.

me escribió un script de shell & ponerlo en /etc/init.d/nt_startup

Para mantener el código hasta la fecha, ejecuto un script de shell git pull en mi repositorio de código y luego ejecutar el script.

El problema es que el git pull no parece ejecutarse cuando se inicia una instancia, pero la secuencia de comandos python se ejecuta correctamente. No está 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 

El script de shell /usr/scripts/code/git_latest se parece a esto:

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

Cabe tirando abajo la última process.py guión.

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

¿Echo de menos algo?

Respuesta

3

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

"A partir ntstartup: sudo: lo siento, debe tener un TTY para ejecutar sudo"

Al parecer Fedora Bloquea comandos no sudo TTY.

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

  1. Como Run raíz "visudo."
  2. encontrar la línea con "requiretty Default" y coméntela (#Default requiretty)

Hope esto es útil para cualquier otra persona que se encuentra con este problema.

+2

¿Por qué estás usando sudo? Los scripts de inicio se ejecutan como root de todos modos. – tylerl

0

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

+0

El script process.py se está ejecutando al inicio ... así que no creo que ese sea el problema. Es solo que el "git pull" no se está ejecutando. – Mark

+0

Por cierto, hice las sugerencias anteriores (# chkconfig: 345 99 02) y todavía no tuve suerte ... Lo que puedo pensar es que la llamada de git está fallando porque la red no se ha inicializado o algo así? – Mark

Cuestiones relacionadas