

Il s’agit du nouveau *Guide de référence des modèles CloudFormation *. Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le [guide de AWS CloudFormation l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Le script d’assistance `cfn-hup` est un démon qui détecte les modifications des métadonnées de ressources et exécute les actions définies par l’utilisateur lorsqu’un changement est détecté. Cette approche vous permet d'apporter des mises à jour de configuration dans les instances Amazon EC2 en cours d'exécution via l'action d'API `UpdateStack`.

Pour plus d'informations, consultez le didacticiel de [mise à jour d'une CloudFormation pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/updating.stacks.walkthrough.html) dans le *guide de AWS CloudFormation l'utilisateur*.

**Topics**
+ [Syntaxe](#cfn-hup-Syntax)
+ [Options](#cfn-hup-options)
+ [Fichier de configuration cfn-hup.conf](#cfn-hup-config-file)
+ [Fichier de configuration `hooks.conf`](#cfn-hup-hook-file)
+ [`hooks.d`annuaire](#cfn-hup-hooks-dir)
+ [Exemples](#cfn-hup-examples)
+ [Ressources connexes](#cfn-hup-related-resources)

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

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

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


| Nom | Description | Obligatoire | 
| --- | --- | --- | 
|   `--config\|-c config.dir`   |  Spécifie le chemin dans lequel le script `cfn-hup` recherche les répertoires `cfn-hup.conf` et `hooks.d`. Sur Windows, le chemin d'accès par défaut est `system_drive\cfn`. Sur Linux, le chemin d'accès par défaut est `/etc/cfn`.  |  Non  | 
|   `--no-daemon`   |  Spécifiez cette option pour exécuter le script `cfn-hup` une seule fois, puis quitter.  |  Non  | 
|   `-v, --verbose `   |  Spécifiez cette option pour utiliser le mode détaillé.  |  Non  | 

## Fichier de configuration cfn-hup.conf
<a name="cfn-hup-config-file"></a>

Le fichier `cfn-hup.conf` stocke le nom de la pile et les informations d’identification  AWS ciblés par le démon `cfn-hup`.

Le fichier `cfn-hup.conf` utilise le format suivant :

```
[main]
stack=<stack-name-or-id>
```


| Nom | Description | Obligatoire | 
| --- | --- | --- | 
|   `stack`   |  Nom ou ID de la pile. *Type* : chaîne  |  Oui  | 
|   `credential-file`   |  Fichier d'informations d'identification spécifique au propriétaire, dans le format utilisé pour les outils de ligne de commande. *Type* : chaîne *Condition* : le paramètre `role` prévaut sur ce paramètre.  |  Non  | 
|   `role`   |  Nom d'un rôle IAM associé à l'instance. *Type* : chaîne  |  Non  | 
|   `region`   |  Nom du Région AWS contenant la pile. *Exemple* : us-east-2  |  Non  | 
|   `umask`   |  La valeur `umask` utilisée par le démon `cfn-hup`. Cette valeur peut être spécifiée avec ou sans 0 de tête. Dans les deux cas, elle est interprétée comme un nombre octal (similaire à la commande Linux `umask`). Ce paramètre n'a aucun effet sur Windows. *Type* : octal entier compris entre `0` et `0777` *Par défaut* : `022`, versions 1.4–22 et ultérieures. La valeur par défaut de `022` masque les autorisations d’écriture pour le groupe et les autres utilisateurs ; ainsi, les fichiers créés par le démon `cfn-hup` ne sont pas modifiables par le groupe ou le reste du système par défaut. La valeur par défaut pour les versions 1.4–21 et antérieures est `0`, ce qui ne masque rien.  |  Non  | 
|   `interval`   |  Intervalle, en minutes, utilisé pour rechercher les modifications des métadonnées. *Type* : entier *Par défaut* : `15`  |  Non  | 
|   `verbose`   |  Spécifie si la journalisation détaillée doit être utilisée. *Type* : valeur booléenne *Par défaut* : `false`  |  Non  | 

## Fichier de configuration `hooks.conf`
<a name="cfn-hup-hook-file"></a>

Le fichier de configuration `hooks.conf` définit les actions utilisateur que le démon `cfn-hup` appelle périodiquement. Le fichier `hooks.conf` utilise le *format* suivant :

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

Lors de l’exécution d’une opération, celle-ci est lancée dans une copie de l’environnement actuel (celui dans lequel `cfn-hup` s’exécute), avec `CFN_OLD_METADATA` défini sur la valeur précédente des métadonnées spécifiée par le chemin et `CFN_NEW_METADATA` défini sur la valeur actuelle.

Le fichier de configuration des hooks est chargé uniquement au démarrage du démon `cfn-hup` ; l’ajout de nouveaux hooks nécessite donc un redémarrage du démon. Un cache des anciennes valeurs de métadonnées est stocké dans `/var/lib/cfn-hup/data/metadata_db` ; vous pouvez supprimer ce cache pour forcer `cfn-hup` à exécuter à nouveau toutes les actions `post.add`.


| Nom | Description | Obligatoire | 
| --- | --- | --- | 
|   `hookname`   |  Nom unique de ce hook. *Type* : chaîne  |  Oui  | 
|   `triggers`   |  Liste CSV des conditions à détecter. *Valeurs valides* : `post.add`, `post.update` ou `post.remove` *Exemple* : `post.add, post.update`  |  Oui  | 
|   `path`   |  Chemin d'accès vers l'objet de métadonnées. Prend en charge un chemin d'accès long arbitraire dans le bloc de métadonnées.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AWSCloudFormation/latest/TemplateReference/cfn-hup.html)  |  Oui  | 
|   `action`   |  Commande shell arbitraire qui est exécutée telle quelle.  |  Oui  | 
|   `runas`   |  Utilisateur sous lequel exécuter les commandes. `cfn-hup` utilise la commande su pour passer à cet utilisateur.  |  Oui  | 

## `hooks.d`annuaire
<a name="cfn-hup-hooks-dir"></a>

Pour permettre la composition de plusieurs applications ajoutant des hooks de notification de changement, `cfn-hup` prend en charge un répertoire nommé `hooks.d`, situé dans le répertoire de configuration des hooks. Vous pouvez placer un ou plusieurs fichiers de configuration de hooks supplémentaires dans le répertoire `hooks.d`. Les fichiers de hooks supplémentaires doivent respecter la même structure que le fichier `hooks.conf`.

Le démon `cfn-hup` analyse et charge chaque fichier présent dans ce répertoire. Si des hooks du répertoire `hooks.d` portent le même nom qu’un hook de `hooks.conf`, les hooks sont fusionnés (c’est-à-dire que `hooks.d` écrase `hooks.conf` pour les valeurs spécifiées dans les deux fichiers).

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

Dans les exemples suivants, CloudFormation déclenche le fichier `cfn-auto-reloader.conf` hooks lorsque vous modifiez la `AWS::CloudFormation::Init` ressource associée à la `LaunchConfig` ressource.

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

## Ressources connexes
<a name="cfn-hup-related-resources"></a>

Vous pouvez également visiter notre GitHub référentiel pour télécharger des [exemples de modèles](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates) que nous utilisons`cfn-hup`, notamment les modèles suivants.
+  [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) 