Execute o arquivo sh quando a instância do Amazon EC2 for iniciada

Execute o arquivo sh quando a instância do Amazon EC2 for iniciada

Eu tenho um arquivo “sh” que inicia um servidor de nó.

Funciona bem se eu correr

sh /var/www/init_node.sh

Quero que o script seja executado sempre que minha instância for reiniciada (para ter um servidor de nó instalado e funcionando).

Adicionei o script ao meu arquivo /etc/rc.local da seguinte forma:

sh /var/www/init_node.sh 
exit 0

Porém, quando reinicio a instância, o servidor nodejs não está em execução. É uma instância do Ubuntu 64.

Acho que não é importante, mas aqui está o conteúdo do meu arquivo 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 

Também

sh /etc/rc.local 

funciona bem

Alguma ideia?

Responder1

Eu tive um problema semelhante com o arquivo rc.local em uma instância da Amazon. Acontece que tive um erro com o script em rc.local que não permitiria sua execução a menos que eu tivesse um tty.

Então, como você descobre se está recebendo um erro semelhante? Use cloud-init para executar seu script.

Para minha distribuição Amazon Linux, editei primeiro o arquivo /etc/init.d/cloud-init-user-scripts.

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

Para sempre"

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

Em seguida, crie um diretório mkdir /var/lib/cloud/data/scripts. Agora copie o script que deseja executar na inicialização para /var/lib/cloud/data/scripts. Certifique-se de que o bit executável do seu script esteja definido.

Agora você deve ser capaz de executar sudo /etc/init.d/cloud-init-user-scripts start. Então você pode verificar /var/log/cloud-init.logse há erros.

informação relacionada