cfn-init
Descrição
O script auxiliar cfn-init lê metadados do modelo da chave AWS::CloudFormation::Init
e funciona de acordo com:
-
Obter e analisar metadados do CloudFormation
-
Instalar pacotes
-
Gravar arquivos no disco
-
Ativar/desativar e iniciar/interromper serviços
nota
Se você usar o cfn-init para atualizar um arquivo existente, ele cria uma cópia de backup do arquivo original no mesmo diretório com uma extensão .bak. Por exemplo, se você atualizar /
, essa ação produzirá dois arquivos: path
/to
/file_name
/
contém o conteúdo do arquivo original e path
/to
/file_name
.bak/
contém o conteúdo atualizado.path
/to
/file_name
Para obter informações sobre os metadados do modelo, consulte AWS::CloudFormation::Init.
nota
O cfn-init não requer credenciais e, portanto, você não precisa usar as opções --access-key
, --secret-key
, --role
ou --credential-file
. No entanto, se nenhuma credencial for especificada, o CloudFormation verificará se há associação de pilha e limitará o escopo da chamada para a pilha à qual a instância pertence.
Sintaxe
cfn-init --stack|-s
stack.name.or.id
\ --resource|-rlogical.resource.id
\ --regionregion
\ --access-keyaccess.key
\ --secret-keysecret.key
\ --rolerolename
\ --credential-file|-fcredential.file
\ --configsets|-cconfig.sets
\ --url|-uservice.url
\ --http-proxyHTTP.proxy
\ --https-proxyHTTPS.proxy
\ --verbose|-v
Opções
Nome | Descrição | Obrigatório |
---|---|---|
|
Nome ou ID da pilha. Tipo: string Padrão: nenhum Exemplo: |
Sim |
|
O ID de recursos lógicos do recurso que contém os metadados. Tipo: string Exemplo: |
Sim |
|
O endpoint regional do CloudFormation a ser usado. Tipo: string Padrão: Exemplo: |
Não |
|
A chave de acesso da AWS para uma conta com permissão para chamar Tipo: string |
Não |
|
A chave de acesso secreta da AWS que corresponde a uma chave de acesso específica da AWS. Tipo: string |
Não |
|
O nome de um perfil do IAM que está associado à instância. Tipo: string Condição: o parâmetro do arquivo de credencial substitui este parâmetro. |
Não |
|
Um arquivo que contém uma chave de acesso secreta e uma chave de acesso. O parâmetro do arquivo de credencial substitui os parâmetros --role, --access-key e --secret-key. Tipo: string |
Não |
|
Uma lista separada por vírgulas de configsets para executar (em ordem). Tipo: string Padrão: |
Não |
|
O endpoint do CloudFormation a ser usado. Tipo: string |
Não |
|
Um proxy HTTP (não SSL). Use o seguinte formato: Tipo: string |
Não |
|
Um proxy HTTPS. Use o seguinte formato: Tipo: string |
Não |
|
Saída detalhada. Isto é útil para casos de depuração nos quais o cfn-init está falhando ao inicializar. notaPara depurar eventos de inicialização, você deve ativar o DisableRollback. Você pode fazer isso usando o console do CloudFormation, selecionando Show Advanced Options (Mostrar opções avançadas) e depois definindo Rollback on failure (Reverter em caso de falha) para No (Não). Em seguida, é possível inserir o SSH no console e ler os logs em /var/log/cfn-init.log. |
Não |
|
Mostra a mensagem de ajuda e sai. |
Não |
Exemplo
Exemplo do Amazon Linux
Os seguintes trechos mostram a propriedade UserData
de uma instância do EC2, que executa o configset InstallAndRun
que está associado ao recurso WebServerInstance
.
Para obter um modelo de exemplo completo, consulte Implantar aplicações no Amazon EC2.
Para incluir a versão mais recente, adicione yum install -y aws-cfn-bootstrap
a UserData
.
JSON
Propriedade UserData
utilizando a função Fn::Join
intrínseca.
{ "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "", "yum install -y aws-cfn-bootstrap", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --configsets InstallAndRun ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } } }
YAML
Propriedade UserData
utilizando a função Fn::Join
intrínseca.
UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - '' - yum install -y aws-cfn-bootstrap - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets InstallAndRun ' - ' --region ' - !Ref 'AWS::Region' - |+
JSON
Propriedade UserData
utilizando a função Fn::Sub
intrínseca.
{ "UserData": { "Fn::Base64": { "Fn::Sub": [ "#!/bin/bash -x\n# Install the files and packages from the metadata\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n\n# Signal the status from cfn-init\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n", {} ] } } }
YAML
Propriedade UserData
utilizando a função Fn::Sub
intrínseca.
UserData: !Base64 'Fn::Sub': - > #!/bin/bash -x # Install the files and packages from the metadata /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} # Signal the status from cfn-init /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} - {}