

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.<br />*Tipo:* string | Sim | 
|  `credential-file`  | Um arquivo de credenciais somente de proprietário, no mesmo formato usado para as ferramentas de linha de comando.<br />*Tipo:* string<br />*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.<br />*Tipo:* string | Não | 
|  `region`  | O nome da Região da AWS que contém a pilha.<br />*Exemplo*: us-east-2 | Não | 
|  `umask`  | O `umask` usado pelo daemon `cfn-hup`.<br />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.<br />*Tipo*: inteiro octal entre `0` e `0777`<br />*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.<br />*Tipo*: inteiro<br />*Padrão*: `15` | Não | 
|  `verbose`  | Especifica se deve usar o registro detalhado.<br />*Tipo*: booliano<br />*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.<br />*Tipo:* string | Sim | 
|  `triggers`  | Uma lista delimitada por vírgulas das condições a serem detectadas.<br />*Valores válidos*: `post.add`, `post.update` ou `post.remove`<br />*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.<br />[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) 