

Este é o novo *Guia de referência de modelos do CloudFormation*. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o [Guia do usuário do AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# cfn-hup
<a name="cfn-hup"></a>

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

Para obter mais informações, consulte [Atualizar uma pilha do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/updating.stacks.walkthrough.html) no *Guia do usuário do AWS CloudFormation*.

**Topics**
+ [Sintaxe](#cfn-hup-Syntax)
+ [Opções](#cfn-hup-options)
+ [Arquivo de configuração cfn-hup.conf](#cfn-hup-config-file)
+ [`hooks.conf`Arquivo de configuração](#cfn-hup-hook-file)
+ [Diretório `hooks.d`](#cfn-hup-hooks-dir)
+ [Exemplos](#cfn-hup-examples)
+ [Recursos relacionados](#cfn-hup-related-resources)

## Sintaxe
<a name="cfn-hup-Syntax"></a>

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

## Opções
<a name="cfn-hup-options"></a>


| Name (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
<a name="cfn-hup-config-file"></a>

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>
```


| Name (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  | 

## `hooks.conf`Arquivo de configuração
<a name="cfn-hup-hook-file"></a>

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.


| Name (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 da*: `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.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/TemplateReference/cfn-hup.html)  |  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`
<a name="cfn-hup-hooks-dir"></a>

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
<a name="cfn-hup-examples"></a>

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
<a name="cfn-hup-example.json"></a>

```
...
    "LaunchConfig": {
      "Type" : "AWS::AutoScaling::LaunchConfiguration",
      "Metadata" : {
        "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
<a name="cfn-hup-example.yaml"></a>

```
...
  LaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata:
      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
<a name="cfn-hup-related-resources"></a>

Você também pode visitar nosso repositório no GitHub para baixar [exemplos de modelo](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates) que usam `cfn-hup`, incluindo os que se seguem.
+  [InstanceWithCfnInit.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/EC2/InstanceWithCfnInit.yaml) 
+  [AutoScalingRollingUpdates.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/AutoScaling/AutoScalingRollingUpdates.yaml) 