Sua instância só será "clonada" se você tiver uma AMI recente (Amazon Machine Image) tirada da instância. Provavelmente haverá algumas alterações em seu sistema de arquivos desde que o snapshot foi tirado, então é uma boa idéia usar AWS userdata para criar um script Bash / CloudInit que acionará uma atualização nas áreas que serão alteradas, por exemplo base de código, mídia, etc.
As opções para atualizar determinadas áreas podem ser de (listando prós e contras):
- Ponto de armazenamento central no S3
- As permissões para acessar o intervalo são gerenciadas por meio da função do IAM que você atribui às suas instâncias
- Largura de banda de E / S rápida entre serviços da AWS
- Tempo de atividade consistente
-
Con: A menos que você use controle de versões do intervalo , você não usa t a flexibilidade que o controle de origem oferece a você para revisões
- Um repositório de controle de origem (Git, Subversion) para dados de bootstrap:
- Permite que você atualize dinamicamente seus scripts de bootstrapping por meio do controle de origem, tenha contribuições e histórico para isso, etc.
-
Con: Requer uma (potencialmente) conexão externa com o seu host Git, permissões e configuração de grupo de segurança para permitir isso
-
Con: Provavelmente um pouco mais lento que S3
Veja um exemplo de um script de bootstrapping que você poderia aplicar à sua configuração de ativação para ativá-lo para executar as tarefas de bootstrapping dinamicamente. Observe que os scripts userdata são executados como usuário root.
#!/bin/bash
# Update your packages
yum update -y
# Get/execute bootstrapping
cd /tmp
git clone ssh://your-git-server/bootstrapping-repo.git
chmod +x /tmp/your-repo/bootstrapping.sh
# Execute it
/tmp/your-repo/bootstrapping.sh
# Remove the bootstrapping script remnants
rm -rf /tmp/your-repo
Esse método permite a flexibilidade de atualizar seu "bootstrapping-repo" quantas vezes você precisar, sem ter que criar novas AMIs regularmente.
Como plano de fundo, eu uso o S3 em meus userdata para pegar chaves SSH relevantes, arquivos de host, etc., e o Git para o repositório de bootstrapping.
Também é uma boa idéia manter seus AMIs atualizados o mais regularmente possível e salvos em sua configuração de lançamento, para que as novas instâncias ativadas não precisem passar muito tempo atualizando-se. Se você faz isso manualmente de vez em quando ou escreve um script para fazer isso por meio da API ou do CLI, depende de você.
FYI : a saída dos dados do usuário e dos scripts subseqüentes chamados na inicialização da instância será registrada no arquivo /var/log/cloud-init-output.log