Como posso utilizar dados do usuário para executar automaticamente um script em cada reinicialização de uma instância Linux do Amazon EC2?

3 minuto de leitura
0

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:

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

AWS Systems Manager Automation

Formatos de dados do usuário

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos