cfn-init - AWS CloudFormation

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

-h, --help

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 com o AWS CloudFormation.

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