Sou muito novo nos serviços da AWS. Estou tentando usar a formação de nuvens da AWS e criei um modelo. O modelo está livre de erros e eu sou capaz de criar máquinas usando isso.
Mas adicionei algumas configurações no modelo para instalar o tomcat, git e outras coisas durante a inicialização. Mas isso não acontece para mim.
Aqui está uma parte do código que eu usei para instalar o tomcat:
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"tomcat6": [],
"git": [],
}
}
}
}
},
Mas quando eu entro na máquina, tomcat
nem git
foi instalado!
Desde já, obrigado.
ubuntu
tomcat
amazon-web-services
amazon-cloudformation
homem Morcego
fonte
fonte
Respostas:
Acredito que seu problema aqui é a confusão em torno de que o cloud-init não é o mesmo que o cfn-init.
cloud-init é a ferramenta iniciada como parte das AMIs AWS do Ubuntu que permitem a interpretação do componente de dados do usuário EC2 dos metadados da instância. O Amazon Linux também adotou essa ferramenta e a incorporou à sua AMI.
cfn-init faz parte de um conjunto de ferramentas diferente chamado Scripts CloudFormation Helper, criado pela AWS para Amazon Linux, que pode ler uma seção adicional nomeada
Metadata
no seu modelo CloudFormation.Portanto, as AMIs do Ubuntu e Amazon Linux possuem as ferramentas cloud-init pré-instaladas para acessar os dados do usuário, mas apenas o Amazon Linux possui os scripts auxiliares do CloudFormation pré-instalados, por exemplo, cfn-init para acessar os metadados do CloudFormation.
No entanto, a AWS distribui pacotes que você pode usar para ler os metadados do CloudFormation. Especificamente, observe este modelo para saber como você pode usar um script de dados do usuário cloud-init para instalar python-setuptools, fazer o download dos scripts do CloudFormation Helper, instalá-los usando easy_install e, em seguida, chamar cfn-init.
Nota: Existem outras distribuições ou AMIs que podem suportar cloud-init ou cfn-init, mas apenas estou abordando os casos gerais aqui.
fonte
Você precisa chamar cfn-init ( http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html ) dentro da propriedade UserData da instância:
A propriedade UserData é codificada em Base64 e permite especificar um script que deve ser executado no início da instância. Aqui você pode chamar cfn-init, que lerá os metadados CloudFormation :: Init e configurará tudo o que for especificado lá.
Além disso, ao criar a pilha CF, convém entrar em configurações avançadas na segunda página (depois de fornecer os parâmetros) e verifique se Rollback on error está definido como "No". Dessa forma, se o script cfn-init falhar por qualquer motivo, você poderá ssh na instância e verifique o arquivo /var/log/cfn-init.log para obter mais informações.
fonte
A resposta acima está correta. Mas você também deve certificar-se de ter instalado com êxito os scripts auxiliar do CloudFormation. Siga http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html para obter detalhes da instalação.
fonte
fonte