Como posso utilizar dados do usuário para executar automaticamente um script em cada reinicialização de uma instância Linux do Amazon EC2?
Quero utilizar os dados do usuário para executar um script sempre que minha instância do Amazon Elastic Compute Cloud (Amazon EC2) for reiniciada. Como posso fazer isso?
Descrição breve
Por padrão, os scripts de dados de usuário e as diretivas de cloud-init são executados somente durante o primeiro ciclo de inicialização quando uma instância do EC2 é iniciada. No entanto, você pode configurar o script de dados do usuário e as diretivas cloud-init com um arquivo MIME de várias partes. Um arquivo MIME de várias partes permite que seu script substitua a frequência com que os dados do usuário são executados no pacote cloud-init. Em seguida, o arquivo executa o script do usuário. Para mais informações sobre arquivos MIME de várias partes, consulte Mime Multi Part Archive no site do cloud-init.
Observação: é uma prática recomendada criar um snapshot da sua instância antes de prosseguir com a resolução a seguir.
Resolução
Aviso: antes de iniciar esse procedimento, revise o seguinte:
- Interromper e iniciar a instância apaga todos os dados nos volumes de armazenamento da instância. Certifique-se de fazer backup de todos os dados nos volumes de armazenamento da instância que você deseja manter. Para mais informações, consulte Determinar o tipo de dispositivo raiz da sua AMI.
- Se a sua instância do EC2 tiver um endereço IPv4 público atribuído automaticamente, interromper e iniciar essa instância fará com que o endereço IPv4 seja alterado. Se você precisar que a instância tenha um endereço IPv4 público estático, considere usar um endereço IP elástico. Endereços IP elásticos persistem após a interrupção e o início de uma instância.
1. Certifique-se de que a versão mais recente do cloud-init esteja instalada e funcionando corretamente na sua instância do EC2.
2. Por motivos de segurança, crie uma política do IAM para restringir os usuários que têm permissão para adicionar ou remover dados do usuário por meio da API ModifyInstanceAttribute.
3. Abra o console do Amazon EC2.
4. Pare a instância.
5. Escolha Ações, escolha Configurações da instância e escolha Editar dados do usuário.
6. Copie seu script de usuário na caixa Editar dados do usuário e escolha Salvar.
O exemplo a seguir é um script shell que grava “Hello World” em um arquivo testfile.txt em um diretório /tmp.
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash /bin/echo "Hello World" >> /tmp/testfile.txt --//--
Por padrão, o cloud-init permite somente um tipo de conteúdo nos dados do usuário de cada vez. No entanto, este exemplo mostra os tipos de conteúdo text/cloud-config e text/x-shellscript em um arquivo MIME de várias partes.
O tipo de conteúdo text/cloud-config substitui a frequência com que os dados do usuário são executados no pacote cloud-init, definindo o parâmetro SCRIPTS-USER como ALWAYS.
O tipo de conteúdo text/x-shellscript fornece o script de usuário real a ser executado pelo módulo cloud_final_modules do cloud-init. Neste exemplo, há somente uma linha a ser executada, que é /bin/echo "Hello World." >> /tmp/testfile.txt.
Observação: substitua a linha /bin/echo "Hello World." >> /tmp/testfile.txt pelo script de shell que você deseja executar durante a inicialização da instância.
7. Inicie sua instância do EC2 novamente e confirme se o script está sendo executado corretamente.
Informações relacionadas
Executar comandos na sua instância Linux na inicialização
Executar comandos na sua instância Windows na inicialização
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há um ano