cfn-hup - AWS CloudFormation

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.

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

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é. Cela vous permet de mettre à jour la configuration de vos EC2 instances Amazon en cours d'exécution par le biais de l'action UpdateStack API.

Pour plus d'informations, consultez le didacticiel de mise à jour d'une CloudFormation pile dans le guide de AWS CloudFormation l'utilisateur.

Syntaxe

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

Options

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

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

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.

Options de format de chemin d'accès
  • Ressources. <LogicalResourceId>— surveille l'heure de la dernière mise à jour de la ressource, en 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 EC2 instance).

  • Ressources. <LogicalResourceId>.Metadata (.optional path) : 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 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

hooks.dannuaire

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

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

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

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

Vous pouvez également visiter notre GitHub référentiel pour télécharger des exemples de modèles que nous utilisonscfn-hup, notamment les modèles suivants.