Executar um script bash após a inicialização da instância EC2

18

Eu tenho um script em uma instância do EC2 que inicia remotamente outra instância.

Uma vez que esta instância esteja totalmente carregada (inicialização pronta) eu quero que ela execute automaticamente um script bash, qual seria a melhor maneira de fazer isso?

Eu preciso de tudo para ser totalmente iniciado, basicamente o script bash executa um script de conversão de imagem (usando o ImageMagick e executa o comando "wget" algumas vezes)

Atualmente, o script está localizado aqui:

/home/root/beginProcess.sh

E posso iniciá-lo manualmente executando

bash beginProcess.sh

RHEL-6.2-Starter-EBS-i386

Além disso, há um volume do EBS anexado a isso, se isso ajudar, obrigado!

    
por SSH This 15.03.2012 / 02:05

2 respostas

25

Sugiro usar a opção dados do usuário para ec2-run-instances . Ele permite que você dê um script de algum tipo para a VM que será executada na primeira inicialização. Se você está usando o Ubuntu ou Debian, você pode usar o cloud-init , que coloca um bom polimento no processo. Se estiver usando cloud-init, você pode usar a seção [runcmd] do arquivo de configuração para especificar comandos arbitrários a serem executados após a inicialização.

Obrigado ao usuário do SF Eric Hammond pela página de dados do usuário. Confira seu site - ele tem muitas informações sobre a AWS.

Editar: Após a releitura, não está claro se você queria executar um comando na inicialização ou em cada inicialização. As instruções acima só se aplicam à inicialização inicial. Se você deseja executar um comando em cada inicialização, você tem algumas opções - você pode executar um comando através da diretiva @reboot cron ou, como alternativa, você pode adicionar o script a /etc/rc.local , que será executado toda vez que o sistema botas.

    
por 15.03.2012 / 02:22
9

Se você estivesse usando uma AMI que tivesse o pacote cloud-init instalado (como o Amazon Linux ou Ubuntu), você poderia simplesmente passar o script bash (que começa com #!) como o arquivo de dados do usuário e ele seria executado automaticamente no final do processo de inicialização.

Por exemplo, pode ser tão simples quanto:

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

Aqui está o artigo em que introduzi o conceito de script de dados do usuário, agora disponível nas principais AMIs do EC2, como Amazon Linux e Ubuntu: link

Infelizmente, parece que você está querendo usar um RHEL AMI. Eu executei uma cópia disso e não consegui encontrar nenhuma referência ao cloud-init ou a execução de scripts de dados do usuário na primeira inicialização, nem testei o mesmo trabalho.

Eu não estou dizendo que você deve trocar distros Linux apenas por isso, mas o Amazon Linux é baseado no RHEL, então isso pode funcionar para você.

Aqui está um artigo que escrevi que pode ajudá-lo a depurar seu script de dados de usuário se ele não funcionar da primeira vez: link

    
por 15.03.2012 / 02:34