Depois que o cloud-init executa um script de dados do usuário na primeira inicialização de uma instância do EC2, um arquivo de estado é presumivelmente gravado para que o cloud-init não execute o script novamente nas reinicializações subsequentes. Há casos em que eu gostaria de excluir esse arquivo de estado para que o script de dados do usuário seja executado novamente. Cadê?
rm /var/lib/cloud/instances/*/sem/config_scripts_user
Trabalho confirmado em:
Por uma questão de integridade, se você tiver uma situação em que deseja acompanhar o fato/possibilidade de que esta AMI [tinha uma AMI pai que ...] e todas executaram
cloud-init
dados do usuário, você pode excluir apenas o semáforo atual.rm /var/lib/cloud/instance/sem/config_scripts_user
Você também pode configurar seus dados de usuário para serem executados novamente a cada inicialização, em vez de remover o arquivo de estado. Você deve usar
cloud_final_modules
em seu script userdata para executar novamente o script userdata e para isso você deve personalizar uderdata para ter vários arquivos em userdata. Exemplo de arquivo userdata seria como:Isso fará com que o script userdata seja executado na última etapa de cada processo de inicialização. Aqui apenas uma única linha
bin/echo "Hello World" >> /tmp/userdata-test.txt
a ser executada, substitua isso pelo seu script de shell que precisa ser executado toda vez que uma máquina é inicializada.Você pode colocar seu script em /etc/rc.local, que executará o script a cada reinicialização.
O script abaixo funcionou perfeitamente para mim depois que a instância ubuntu ec2 foi lançada.