cfn-hup - AWS CloudFormation

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

Description

Le script d'assistant cfn-hup est un programme démon qui détecte les modifications des métadonnées des ressources et exécute des actions spécifiées par l'utilisateur lorsque cela se produit. 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.

Syntaxe

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

Options

Name (Nom) Description Obligatoire

--config|-c config.dir

Spécifie le chemin d'accès sous 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 fois, puis quittez le programme.

Non

-v, --verbose

Spécifiez cette option pour utiliser le mode détaillé.

Non

Fichier de configuration cfn-hup.conf

Le fichier cfn-hup.conf stocke le nom de la pile et les informations d'identification AWS ciblées par le programme démon cfn-hup.

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

[main] stack=<stack-name-or-id>
Name (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 de la région AWS contenant la pile.

Exemple : us-east-2

Non

umask

Umask utilisé 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 de lecture pour les groupes et pour quiconque. Les fichiers crées par le démon cfn-hup ne sont donc pas accessibles en écriture par les groupes ni par tous 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

Les actions utilisateur que le programme démon cfn-hup appelle périodiquement sont définies dans le fichier de configuration hooks.conf. 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>

Lorsque l'opération est exécutée, elle est exécutée dans une copie de l'environnement actuel (dans lequel se trouve cfn-hup), avec CFN_OLD_METADATA défini à la valeur précédente des métadonnées spécifiée par le chemin, et CFN_NEW_METADATA défini à la valeur actuelle.

Le fichier de configuration hooks est chargé uniquement au démarrage du programme démon cfn-hup. En cas de nouveaux hooks, le démon devra donc être redémarré. Un cache des valeurs de métadonnées précédentes est stocké sous /var/lib/cfn-hup/data/metadata_db. Vous pouvez supprimer ce cache pour forcer cfn-hup à exécuter toutes les actions post.add à nouveau.

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

Options de format de chemin d'accès
  • Ressources. < LogicalResourceId > — surveille l'heure de la dernière mise à jour de la ressource, déclenchant toute modification apportée à la ressource.

  • Ressources. < LogicalResourceId >. PhysicalResourceId— surveille l'ID physique de la ressource, en se déclenchant uniquement lorsque l'identité de la ressource associée change (par exemple, une nouvelle instance EC2).

  • Ressources. < LogicalResourceId > .Metadata (chemin .optional) : surveille les métadonnées d'une ressource pour détecter les modifications (un sous-chemin de métadonnées peut être spécifié à un niveau approfondi arbitraire pour surveiller des valeurs spécifiques).

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

Répertoire hooks.d

Pour permettre la composition de plusieurs applications déployant des hooks de notification des modifications, cfn-hup prend en charge un répertoire nommé hooks.d qui se trouve dans le répertoire de configuration des hooks. Vous pouvez ajouter un ou plusieurs fichiers de configuration de hooks dans le répertoire hooks.d. Les fichiers hooks supplémentaires doivent utiliser la même disposition que le fichier hooks.conf.

Le programme démon cfn-hup analyse et charge chaque fichier dans ce répertoire. Si des hooks du répertoire hooks.d ont le même nom qu'un hook du fichier hooks.conf, ils seront fusionnés (autrement dit, hooks.d remplacera hooks.conf pour toutes les valeurs dupliquées).

Exemple

Dans l'extrait de modèle suivant, CloudFormation déclenche le fichier cfn-auto-reloader.conf hooks lorsque vous modifiez la AWS::CloudFormation::Init ressource associée à la LaunchConfig ressource.

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

Autre exemple

Pour voir un exemple de modèle, consultez Déploiement d'applications sur Amazon EC2 avec AWS CloudFormation.