cfn-init - AWS CloudFormation

cfn-init

Em um modelo do CloudFormation, você pode usar AWS::CloudFormation::Init na seção Metadata de um recurso do Amazon EC2 para definir tarefas de inicialização. Para obter mais informações, consulte AWS::CloudFormation::Init no AWS CloudFormationGuia do usuário do .

O script auxiliar cfn-init lê os metadados do modelo na chave AWS::CloudFormation::Init e atua de acordo para:

  • Obter e analisar metadados do CloudFormation

  • Instalar pacotes

  • Gravar arquivos no disco

  • Ativar/desativar e iniciar/interromper serviços

O script auxiliar cfn-init geralmente é executado a partir dos dados do usuário de uma instância do Amazon EC2 ou do modelo de execução.

nota

Se você usar cfn-init para atualizar um arquivo existente, ele cria uma cópia de backup do arquivo original com uma extensão .bak no mesmo diretório. Por exemplo, se você atualizar /path/to/file_name, essa ação produzirá dois arquivos: /path/to/file_name.bak contém o conteúdo do arquivo original e /path/to/file_name contém o conteúdo atualizado.

Sintaxe

cfn-init --stack|-s stack.name.or.id \ --resource|-r logical.resource.id \ --region region \ --access-key access.key \ --secret-key secret.key \ --role rolename \ --credential-file|-f credential.file \ --configsets|-c config.sets \ --url|-u service.url \ --http-proxy HTTP.proxy \ --https-proxy HTTPS.proxy \ --verbose|-v
nota

cfn-init não exige credenciais; 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. Para ter mais informações, consulte Permissões para scripts auxiliares.

Opções

Nome Descrição Obrigatório

-s, --stack

Nome ou ID da pilha.

Tipo: string

Padrão: nenhum

Exemplo: --stack { "Ref" : "AWS::StackName" },

Sim

-r, --resource

O ID de recursos lógicos do recurso que contém os metadados.

Tipo: string

Exemplo: --resource WebServerHost

Sim

--region

O endpoint regional do CloudFormation a ser usado.

Tipo: string

Padrão: us-east-1

Exemplo:--region ", { "Ref" : "AWS::Region" },

Não

--access-key

A chave de acesso da AWS para uma conta com permissão para chamar DescribeStackResource no CloudFormation. O parâmetro do arquivo de credencial substitui este parâmetro.

Tipo: string

Não

--secret-key

A chave de acesso secreta da AWS que corresponde a uma chave de acesso específica da AWS.

Tipo: string

Não

--role

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

-f, --credential-file

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

-c, --configsets

Uma lista separada por vírgulas de configsets para executar (em ordem).

Tipo: string

Padrão: default

Não

-u, --url

O endpoint do CloudFormation a ser usado.

Tipo: string

Não

--http-proxy

Um proxy HTTP (não SSL). Use o seguinte formato: http://user:password@host:port.

Tipo: string

Não

--https-proxy

Um proxy HTTPS. Use o seguinte formato: https://user:password@host:port.

Tipo: string

Não

-v, --verbose

Saída detalhada. Isso é útil para os casos de depuração em que ocorre falha ao inicializar cfn-init.

nota

Para depurar eventos de inicialização, você deve ativar DisableRollback. Depois, você pode inserir o SSH no console e ler os logs em /var/log/cfn-init.log. Para obter mais informações, consulte Escolher como lidar com falhas ao provisionar recursos no Guia do usuário do AWS CloudFormation.

Não

-h, --help

Mostra a mensagem de ajuda e sai.

Não

Exemplos

Exemplos do Amazon Linux

Os exemplos a seguir mostram a propriedade UserData de uma instância do EC2, que executa o InstallAndRun associado ao recurso WebServerInstance.

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} - {}

Você também pode visitar nosso repositório no GitHub para baixar exemplos de modelo que usam cfn-init, incluindo os que se seguem.

Para modelos do Windows, consulte Trabalhar com modelos de pilha do Microsoft Windows no Guia do usuário do AWS CloudFormation.