cfn-hup - AWS CloudFormation

cfn-hup

O auxiliar cfn-hup é um daemon que detecta alterações em metadados de recursos e executa ações especificadas pelo usuário quando uma alteração é detectada. Isso permite que você faça as atualizações de configuração em suas instâncias do Amazon EC2 em execução pela ação do API UpdateStack.

Sintaxe

cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v

Opções

Nome Descrição Obrigatório

--config|-c config.dir

Especifica o caminho em que o script cfn-hup procura os diretórios cfn-hup.conf e hooks.d. No Windows, o caminho padrão é system_drive\cfn. No Linux, o caminho padrão é /etc/cfn.

Não

--no-daemon

Especifique essa opção para executar o script cfn-hup uma vez e sair.

Não

-v, --verbose

Especifique esta opção para usar o modo detalhado.

Não

Arquivo de configuração cfn-hup.conf

O arquivo cfn-hup.conf armazena o nome da pilha e as credenciais da AWS que o daemon cfn-hup tem como alvo.

O arquivo cfn-hup.conf usa o seguinte formato:

[main] stack=<stack-name-or-id>
Nome Descrição Obrigatório

stack

Um nome ou ID da pilha.

Tipo: string

Sim

credential-file

Um arquivo de credenciais somente de proprietário, no mesmo formato usado para as ferramentas de linha de comando.

Tipo: string

Condição: o parâmetro role substitui este parâmetro.

Não

role

O nome de um perfil do IAM que está associado à instância.

Tipo: string

Não

region

O nome da região da AWS que contém a pilha.

Exemplo: us-east-2

Não

umask

O umask usado pelo daemon cfn-hup.

Esse valor pode ser especificado com ou sem um 0 à esquerda. Em ambos os casos, ele é interpretado como um número octal (semelhante ao comando umask do Linux). Esse parâmetro não tem efeito no Windows.

Tipo: inteiro octal entre 0 e 0777

Padrão: 022, versão 1.4–22 e superior. O valor padrão de 022 mascara as permissões de gravação de grupo e mundo, de forma que os arquivos criados pelo daemon cfn-hup não possam ser gravados em grupo ou mundo por padrão. O valor padrão para versões 1.4–21 e anteriores é 0, que não mascara nada.

Não

interval

O intervalo usado para verificar a existência de alterações nos metadados do recurso em minutos.

Tipo: inteiro

Padrão: 15

Não

verbose

Especifica se deve usar o registro detalhado.

Tipo: booliano

Padrão: false

Não

Arquivo de configuração da hooks.conf

As ações do usuário que o daemon cfn-hup chama periodicamente são definidas no arquivo de configuração hooks.conf. O arquivo hooks.conf usa o seguinte formato:

[hookname] triggers=post.add or post.update or post.remove path=Resources.<logicalResourceId> (.Metadata or .PhysicalResourceId)(.<optionalMetadatapath>) action=<arbitrary shell command> runas=<runas user>

A operação é executada em uma cópia do ambiente atual (onde o cfn-hup está), com CFN_OLD_METADATA definido com o valor de metadados anterior especificado pelo caminho e com CFN_NEW_METADATA definido com o valor atual.

O arquivo de configuração de hooks é carregado apenas na inicialização do daemon cfn-hup portanto, novos hooks exigirão que o daemon seja reiniciado. Um cache dos valores de metadados anteriores é armazenado em /var/lib/cfn-hup/data/metadata_db, e você pode excluir esse cache para forçar cfn-hup a executar todas as ações post.add novamente.

Nome Descrição Obrigatório

hookname

Um nome exclusivo para este hook.

Tipo: string

Sim

triggers

Uma lista delimitada por vírgulas das condições a serem detectadas.

Valores válidos: post.add, post.update ou post.remove

Exemplo: post.add, post.update

Sim

path

O caminho para o objeto de metadados. Oferece suporte a um caminho arbitrariamente profundo dentro do bloco de metadados.

Opções de formato de caminhos
  • Resources.<LogicalResourceId>: monitora o último horário de atualização do recurso, acionando qualquer alteração no recurso.

  • Resources.<LogicalResourceId>.PhysicalResourceId: monitora o ID físico do recurso, acionando somente quando a identidade do recurso associada muda (como uma nova instância do EC2).

  • Resources.<LogicalResourceId>.Metadata(.optional path): monitora os metadados de um recurso para alterações (um subcaminho de metadados pode ser especificado em um nível arbitrariamente mais profundo para monitorar valores específicos).

Sim

action

Um comando shell arbitrário que é executado conforme dado.

Sim

runas

Um usuário executar os comandos as. O cfn-hup usa o comando su para alternar para o usuário.

Sim

Diretório hooks.d

Para ser compatível com a composição de várias aplicações que implantam hooks de notificação de alteração, o cfn-hup é compatível com um diretório denominado hooks.d que fica no diretório de configuração de hooks. Você pode colocar um ou mais arquivos adicionais de configuração de hooks no diretório hooks.d. Os arquivos de hooks adicionais devem usar o mesmo layout que o arquivo hooks.conf.

O daemon cfn-hup analisa e carrega todo arquivo nesse diretório. Se algum hook no diretório hooks.d tiver o mesmo nome que um hook em hooks.conf, os hooks serão mesclados (o que significa que hooks.d substituirá hooks.conf pelos valores que ambos os arquivos especificarem).

Exemplos

Nos exemplos a seguir, o CloudFormation aciona o arquivo de hooks cfn-auto-reloader.conf quando você altera o recurso AWS::CloudFormation::Init associado ao recurso LaunchConfig.

JSON

... "LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "QBVersion": {"Ref": "paramQBVersion"}, "AWS::CloudFormation::Init" : { ... "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { "content": { "Fn::Join": [ "", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", "action=/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "\n", "runas=root\n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" } ...

YAML

... LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Metadata: QBVersion: !Ref paramQBVersion AWS::CloudFormation::Init: ... /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region} runas=root mode: "000400" owner: "root" group: "root" ...

Para obter um exemplo de modelo, consulte Implantar aplicações no Amazon EC2 no Guia do usuário do AWS CloudFormation.