Qu'est-ce que Run_once dans ANIBLE

Qu'est-ce que Run_once dans ANIBLE
Le paramètre ANSIBLE RUN_ONCE détourne la boucle perdue et force une tâche spécifique à exécuter sur le premier hôte du lot. Le résultat peut ensuite être appliqué à d'autres hôtes actifs dans le livre de jeu.

Ce guide discutera de la façon dont vous pouvez utiliser le module ANSIBLE RUN_ONCE pour effectuer un ensemble d'opérations.

Utilisation de base

Le paramètre ANSIBLE RUN_ONCE est appliqué à une tâche spécifique que vous souhaitez être exécutée sur le premier hôte.

L'exemple de playbook suivant montre comment vous pouvez définir le paramètre run_once dans un livre de jeu.

---
- hôtes: tout
#…
Tâches:
- Nom: exécutez cette commande une fois
Shell: commande
run_once: vrai

L'exemple de playbook ci-dessus montre la syntaxe générale pour implémenter une tâche run_once.

Regardons quelques exemples et voyons divers cas d'utilisation du paramètre RUN_ONCE.

Exemple 1

Nous implémenterons un livre play simple qui télécharge un fichier zip à partir d'une URL dans notre premier exemple. Puisqu'il n'a pas de sens de relocaliser à plusieurs reprises le fichier sur chaque hôte, nous pouvons utiliser le paramètre run_once.

Prenez l'exemple de playbook illustré ci-dessous:

---
- hôtes: tout
rassemble_facts: oui
Tâches:
- Nom: téléchargez le fichier une seule fois
run_once: vrai
get_url:
URL: https: // file-examples-com.github.IO / Télécharges / 2017/02 / ZIP_10MB.zipper
dest: ~ / zip_10mb.zipper
- Nom: Unarchive
Unarchive:
src: ~ / zip_10mb.zipper
dest: ~ / zip_10mb

L'exemple de playbook ci-dessus téléchargera le fichier dans le premier lot, puis le désarchive sur les hôtes distants.

Exemple 2

Le prochain exemple de playbook crée une archive à partir d'un référentiel git.

---
- hôtes: tout
rassemble_facts: oui
Tâches:
- Nom: Créez des archives à partir de repo
git:
repo: https: // github.com / échantillons / repo.git
dest: / home / utilisateur / repo
Archive: / Home / User / Repo.zipper
run_once: vrai

Exemple 3

Nous pouvons également utiliser le paramètre run_once pour créer une sauvegarde, puis synchroniser la base de données avec les hôtes distants à l'aide du protocole RSync. Considérez l'exemple de playbook ci-dessous:

---
- hôtes: tout
rassemble_facts: oui
devenir vrai
Tâches:
- Nom: Créez une archive de sauvegarde
archive:
chemin:
/ var / log /
/ Custom / All
dest: / Backup / System0-Backup.bz2
Format: bz2
Supprimer: Non
run_once: vrai
- Nom: synchronisation de synchronisation avec RSYNC
synchroniser:
src: / backup / system0-backup.bz2
dest: rsync: // inventory_hostname / sauvegarde

Le playbook créera une archive de sauvegarde sur le localhost et synchronisera les fichiers avec tous les hôtes distants.

Exemple 4

L'exemple de playbook utilise le paramètre run_once pour envoyer le courrier à tous les hôtes.

---
- hôtes: tout
rassemble_facts: oui
devenir vrai
Tâches:
- Nom: Créez une archive de sauvegarde
local_action:
Module: courrier
Sujet: "Courrier d'ANSIBLE."
à: ubuntu @ localhost
Corps: "Mise à jour de la nouvelle version redis."
run_once: vrai

Le playbook envoie le courrier à un utilisateur spécifique.

Conclusion

Ce guide vous montre comment utiliser le paramètre run_once dans ANSIBLE pour effectuer une tâche sur un seul hôte et appliquer les résultats à d'autres hôtes.