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
.
Tópicos
Sintaxe
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
Opções
Nome | Descrição | Obrigatório |
---|---|---|
|
Especifica o caminho em que o script |
Não |
|
Especifique essa opção para executar o script |
Não |
|
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 |
---|---|---|
|
Um nome ou ID da pilha. Tipo: string |
Sim |
|
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 |
Não |
|
O nome de um perfil do IAM que está associado à instância. Tipo: string |
Não |
|
O nome da região da AWS que contém a pilha. Exemplo: us-east-2 |
Não |
|
O 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 Tipo: inteiro octal entre Padrão: |
Não |
|
O intervalo usado para verificar a existência de alterações nos metadados do recurso em minutos. Tipo: inteiro Padrão: |
Não |
|
Especifica se deve usar o registro detalhado. Tipo: booliano Padrão: |
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.updateor
post.remove path=Resources.<logicalResourceId>
(.Metadataor
.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 |
---|---|---|
|
Um nome exclusivo para este hook. Tipo: string |
Sim |
|
Uma lista delimitada por vírgulas das condições a serem detectadas. Valores válidos: Exemplo: |
Sim |
|
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
|
Sim |
|
Um comando shell arbitrário que é executado conforme dado. |
Sim |
|
Um usuário executar os comandos as. O |
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" ...
Recursos relacionados
Para obter um exemplo de modelo, consulte Implantar aplicações no Amazon EC2 no Guia do usuário do AWS CloudFormation.