cfn-init - AWS CloudFormation

cfn-init

Descrição

O script auxiliar cfn-init lê metadados do modelo da chave AWS::CloudFormation::Init e toma as medidas adequadas para:

  • 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 /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.

Para obter informações sobre os metadados do modelo, consulte AWS::CloudFormation::Init.

nota

O 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.

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

Opções

Nome Descrição Obrigatório

-s, --stack

Nome da pilha ou ID da pilha.

Type: 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.

Type: String

Exemplo: --resource WebServerHost

Sim

--region

O endpoint regional do CloudFormation a ser usado.

Type: 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.

Type: String

Não

--secret-key

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

Type: String

Não

--role

O nome de uma função do IAM que está associada à instância.

Type: 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.

Type: String

Não

-c, --configsets

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

Type: String

Padrão: default

Não

-u, --url

O endpoint do CloudFormation a ser usado.

Type: String

Não

--http-proxy

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

Type: String

Não

--https-proxy

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

Type: String

Não

-v, --verbose

Saída detalhada. Isto é útil para casos de depuração nos quais o cfn-init está falhando ao inicializar.

nota

Para depurar eventos de inicialização, você deve ativar o DisableRollback. Você pode fazer isso usando o console do CloudFormation, selecionando Mostrar opções avançadas e, em seguida, definindo Reverter em caso de falha como Não. Em seguida, você pode inserir o SSH no console e ler os logs em /var/log/cfn-init.log.

Não

-h, --help

Mostra a mensagem de ajuda e sai.

Não

Exemplo

Exemplo do Amazon Linux

O seguinte snippet mostra 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 aplicativos no Amazon EC2 com o AWS CloudFormation.

JSON

"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xe\n", "# Install the files and packages from the metadata\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServerInstance ", " --configsets InstallAndRun ", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]} }

YAML

UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - | # Install the files and packages from the metadata - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets InstallAndRun ' - ' --region ' - !Ref 'AWS::Region' - |+