Amazon ec2 user-data, como funciona?
eu pensei primeiro, ele foi definido como o USER_DATA env var, mas nós também podemos passá-lo como um arquivo. Onde está esse ficheiro guardado? É genérico para todas as instâncias ou varia dependendo da AMI?
Isto não é ... um problema em si, só queria saber como a Amazon faz isso.imagem de dados do Utilizador: http://d.pr/GZlY
4 answers
Os dados do utilizador estão disponíveis para a instância com um simples pedido de HTTP neste URL:
http://169.254.169.254/latest/user-data
A Amazon EC2 não coloca estes dados de usuário na instância diretamente, embora muitos AMIs tenham código que instrui a instância para baixar e processar os dados de usuário automaticamente.
Ver além disso:
Um exemplo fácil para a compreensão de todos: se quiser criar o ficheiro /tmp/testfile.txt
quando a máquina começar, pode simplesmente adicionar estas duas linhas no campo User data
.
#!/bin/bash
touch /tmp/testfile.txt
Lembre-se de colocar o #!/bin/bash
no topo antes dos seus comandos.
Quando executar a instância (Linux AMI), poderá ver o conteúdo do campo User data
em /var/lib/cloud/instance/user-data.txt
AWS userdata é o conjunto de comandos/dados que pode fornecer a uma instância na hora de lançamento. Por exemplo, se você estiver lançando uma instância ec2 e quiser ter o docker instalado no ec2 recém-lançado, então você pode fornecer um conjunto de comandos bash no campo userdata da página de configuração aws ec2.
Usecase
Implantação automatizada
Orquestrar a instância recém-lançada
A efectuar a auto-escala AWS
Toma. is a well explained example of AWS userdata with tutorial de vídeo
A maior parte dos documentos AWS descrevem os dados do utilizador como uma propriedade na qual se pode colocar o script de inicialização do ciclo de vida da instância, isto é, as coisas que se deseja executar apenas quando a instância é lançada pela primeira vez.
Este é geralmente o caso, mas tem havido pelo menos uma outra pessoa além de mim que quer realizar diferentes scripts no reinício, digamos para corrigir um quebrado a chave ou algo assim. E adivinha... você pode fazer isso usando dados do Usuário.Aqui está o código e o link para o documento AWS...
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/sdksdfjsdlf
--//
Não consigo encontrar documentação sobre esta formatação de dados do utilizador que permita que isto aconteça. Já experimentei e funciona. Tentei ver se funciona em todas as startups, e funciona.
Por isso, se achas que precisas de fazer isto, recomendo-te apoio. Certifique - se de que você tem uma cópia dos dados originais do Usuário, e use o código fornecido modificado para suite, e remover o código na próxima vez que você parar a instância (para evitar várias execuções do script).