Ansible

Comment utiliser le module de registre Ansible

Comment utiliser le module de registre Ansible
Dans Ansible, vous pouvez exécuter n'importe quelle commande shell sur vos hôtes Ansible, les hôtes que vous configurerez avec Ansible. Ces commandes shell peuvent avoir des sorties. Par défaut, la sortie est ignorée. Si vous souhaitez stocker la sortie dans une variable et l'utiliser plus tard, vous pouvez utiliser l'Ansible S'inscrire module. Cet article va vous montrer comment utiliser l'Ansible S'inscrire module pour stocker la sortie de la commande dans une variable et y accéder plus tard dans votre playbook Ansible.

Conditions préalables

Si vous voulez essayer les exemples de cet article, vous devez :

1) Avoir Ansible installé sur votre ordinateur.

2) Avoir un hôte Ubuntu configuré pour l'automatisation Ansible.

Il existe de nombreux articles sur LinuxHint dédiés à l'installation d'Ansible et à la configuration des hôtes pour l'automatisation d'Ansible. Vous pouvez consulter ces articles si nécessaire.

Configuration d'un répertoire de projet

Avant d'aller plus loin, configurez un nouveau répertoire de projet Ansible, juste pour garder les choses un peu organisées.

Pour créer le répertoire du projet s'inscrire-démo/ et tous les sous-répertoires requis (dans votre répertoire de travail actuel), exécutez la commande suivante :

$ mkdir -pv register-demo/playbooks

Une fois le répertoire du projet créé, accédez au répertoire du projet, comme suit :

$ cd enregistrer-démo/

Créer un hôtes fichier d'inventaire, comme suit :

$ nano hôtes

Ajoutez l'adresse IP ou le nom DNS de votre hôte Ubuntu dans le fichier d'inventaire (un hôte par ligne), comme indiqué dans la capture d'écran ci-dessous.

Ici, j'ai ajouté mon Ubuntu 20.04 Hôte LTS vm3.nœudkite.com dans le ubuntu20 grouper.

Une fois que vous avez terminé, enregistrez le fichier en appuyant sur + X, suivie par Oui et .

Créer un fichier de configuration Ansible ansible.cfg dans votre répertoire de projet, comme suit :

$ nano ansible.cfg

Ensuite, tapez les lignes suivantes dans le ansible.cfg déposer:

[valeurs par défaut]
inventaire           = hôtes
host_key_checking   = False

Une fois que vous avez terminé, enregistrez le ansible.cfg fichier en appuyant sur + X, suivie par Oui et .

Maintenant, essayez de pinger votre hôte Ubuntu, comme suit :

$ ansible ubuntu20 -u ansible -m ping

Comme vous pouvez le voir, mon Ubuntu 20.04 hôte vm3.nœudkite.com est accessible.

Exemple 1 : les bases

Dans cet exemple, je vais vous montrer quelques-unes des bases de l'Ansible S'inscrire module. Je vais utiliser Ansible pour générer un mot de passe aléatoire dans mon Ubuntu 20.04 hôte utilisant le pwgen commande, stockez le mot de passe dans une variable à l'aide de la S'inscrire module, et imprimez le mot de passe à l'écran.

Tout d'abord, créez le nouveau playbook générer_passer.yaml dans le cahiers/ répertoire, comme suit :

$ nano playbooks/generate_pass.yaml

Tapez les lignes suivantes dans le générer_passer.yaml déposer:

- hôtes : ubuntu20
utilisateur : ansible
devenir vrai
Tâches:
- name : Assurez-vous que pwgen est installé
apte:
nom : pwgen
état : présent
update_cache : vrai
- nom : générer le mot de passe
shell : pwgen -N 1 -s 30
s'inscrire : mypass
- name : imprime le mot de passe généré
déboguer:
msg : "Le mot de passe est mypass "

Une fois que vous avez terminé, appuyez sur + X, suivie par Oui et , pour sauver le générer_passer.yaml déposer.

La ligne suivante indique à Ansible d'exécuter le playbook générer_passer.yaml sur chaque hôte du ubuntu20 grouper. Dans mon cas, le playbook sera exécuté sur l'hôte vm3.nœudkite.com.

Dans ce playbook, je vais définir trois tâches.

La première tâche s'assurera que le pwgen le paquet est installé.

La deuxième tâche générera un mot de passe aléatoire de 30 caractères en utilisant le pwgen commander. je vais utiliser le S'inscrire module pour stocker le mot de passe généré dans le mon passe variable.

La troisième tâche imprimera le mon passe variable à l'aide de l'Ansible déboguer module.

Exécuter le playbook générer_passer.yaml à l'aide de la commande suivante :

$ ansible-playbook playbooks/generate_pass.yaml

Comme vous pouvez le voir, le playbook s'est exécuté avec succès. Un mot de passe a également été généré.

Mais pourquoi la variable mon passe imprimer autant d'articles?

Eh bien, la variable monpasse est un objet qui contient des propriétés importantes.

Les propriétés les plus importantes de chacun des S'inscrire les variables sont les suivantes :

cmd - La commande qui a été exécutée pour générer la sortie.

sortie standard - La sortie de la commande.

stderr - La sortie d'erreur de la commande.

démarrer - La date et l'heure auxquelles la commande a commencé à s'exécuter.

finir - La date et l'heure de fin d'exécution de la commande.

delta - Le temps d'exécution de la commande. C'est la différence entre le finir et le démarrer Propriétés.

stdout_lines - Un tableau contenant chaque ligne de sortie de la commande. Pareil que sortie standard, mais sortie standard sépare les lignes en utilisant des caractères de nouvelle ligne (\n) au lieu de tableaux.

stderr_lines -  Un tableau contenant chaque ligne de sortie d'erreur de la commande. Pareil que stderr, mais stderr sépare les lignes en utilisant des caractères de nouvelle ligne (\n) au lieu de tableaux.

Si vous voulez juste imprimer/accéder à la chaîne de mot de passe (ce qui est très probable), vous pouvez imprimer/accéder au sortie standard propriété de la monpasse variable dans votre playbook, comme indiqué dans la capture d'écran ci-dessous.

$ nano playbooks/generate_pass.yaml

Une fois que vous avez terminé, exécutez le playbook générer_passer.yaml de nouveau. Seule la chaîne de mot de passe sera imprimée, comme vous pouvez le voir dans la capture d'écran ci-dessous.

Qui couvre les bases de l'Ansible S'inscrire module.

Exemple 2 : Stocker le contenu du répertoire

Dans cet exemple, je vais vous montrer comment stocker le contenu d'un répertoire dans une variable à l'aide de l'Ansible S'inscrire module, ainsi que comment les parcourir.

Tout d'abord, créez le nouveau playbook get_dir_contents.yaml dans le cahiers/ annuaire.

$ nano playbooks/get_dir_contents.yaml

Ensuite, tapez les lignes suivantes dans le get_dir_contents.yaml livre de jeu :

- hôtes : ubuntu20
utilisateur : ansible
devenir vrai
Tâches:
- name : liste tous les fichiers et répertoires dans /home/ansible
shell : ls /home/ansible
s'inscrire : dir_contents
- name : affiche le contenu du répertoire à l'aide de boucles
déboguer:
msg : " élément "
boucle : " dir_contents.stdout_lines "

Une fois que vous avez terminé, appuyez sur + X, suivie par Oui et , pour sauver le générer_passer.yaml déposer.

Dans ce playbook, je vais définir deux tâches.

La première tâche répertorie tout le contenu du /accueil/ansible répertoire et les stocke dans le dir_contents variable.

La deuxième tâche imprime le dir_contents variable.

Exécutez le get_dir_contents.yaml livre de jeu, comme suit.

$ ansible-playbook playbooks/get_dir_contents.yaml

Comme vous pouvez le voir, le stdout_lines la propriété stocke le contenu du répertoire sous forme de tableau. le sortie standard la propriété est également stockée dans le contenu du répertoire. Ces propriétés sont séparées par des caractères de nouvelle ligne (\n). Dans cet exemple, le stdout_lines il est facile de travailler avec la propriété.

Ensuite, parcourez le contenu du répertoire à l'aide d'une boucle.

Pour ce faire, ouvrez le get_dir_contents.yaml playbook et modifiez la deuxième tâche, comme indiqué dans la capture d'écran ci-dessous.

$ nano playbooks/get_dir_contents.yaml

Ici, j'itére sur le dir_contents.stdout_lines tableau à l'aide d'une boucle et impression des éléments du tableau à l'aide de l'Ansible déboguer module. Dans cette tâche, le Objet variable est une variable de boucle utilisée pour itérer sur les éléments du tableau.

Exécutez le get_dir_contents.yaml livre de jeu, comme suit :

$ ansible-playbook playbooks/get_dir_contents.yaml

Comme vous pouvez le voir, le contenu de la /accueil/ansible répertoire sont imprimés à l'écran.

Exemple 3 : Répertoire de sauvegarde

Dans cet exemple, je vais vous montrer comment sauvegarder un répertoire à l'aide de l'Ansible S'inscrire, déposer, et copie modules.

Tout d'abord, créez le nouveau playbook backup_home_dir.yaml dans le cahiers/ répertoire, comme suit :

$ nano playbooks/backup_home_dir.yaml

Ensuite, tapez les lignes suivantes dans le backup_home_dir.yaml déposer.

- hôtes : ubuntu20
utilisateur : ansible
devenir vrai
Tâches:
- name: Obtenir le répertoire personnel /home/ansible contents
shell : ls /home/ansible
s'inscrire : dir_contents
- nom : créer un nouveau répertoire /tmp/ansible
déposer:
chemin : /tmp/ansible
état : répertoire
- nom : Sauvegarder le répertoire de base /home/ansible vers /tmp/ansible
copie:
src : /home/ansible/ élément
destination : /tmp/ansible/
remote_src : vrai
boucle : " dir_contents.stdout_lines

Une fois que vous avez terminé, appuyez sur + X, suivie par Oui et , pour sauver le backup_home_dir.yaml déposer.

Dans ce playbook, je vais définir trois tâches.

La première tâche stocke le contenu du /accueil/ansible répertoire (le répertoire que je vais sauvegarder) dans le dir_contents variable à l'aide de l'Ansible S'inscrire module.

La deuxième tâche crée un nouveau répertoire /tmp/ansible en utilisant l'Ansible déposer module. C'est le répertoire où la sauvegarde sera stockée.

La troisième tâche parcourt le dir_contents.stdout_lines tableau et utilise l'Ansible copie module pour copier chaque répertoire dans le /tmp/ansible/ annuaire.

Exécutez le backup_home_dir.yaml livre de jeu, comme suit :

$ ansible-playbook playbooks/backup_home_dir.yaml

Comme vous pouvez le voir, sur mon Ubuntu 20.04 Hôte LTS, la sauvegarde a réussi.

Exemple 4 : Exécuter ou ignorer des tâches

Dans cet exemple, je vais vous montrer comment exécuter ou ignorer des tâches, selon la variable que vous avez enregistrée, en utilisant le S'inscrire module.

Tout d'abord, créez le nouveau playbook enregistrer_conditions.yaml dans le cahiers/ répertoire comme suit :

$ nano playbooks/register_conditions.yaml

Ensuite, tapez les lignes suivantes dans le enregistrer_conditions.yaml déposer.

- hôtes : ubuntu20
utilisateur : ansible
devenir vrai
Tâches:
- nom : liste le contenu du répertoire
shell : ls /home/ansible/test3
s'inscrire : dir_contents
- nom : vérifiez si le répertoire est vide
déboguer:
msg : "Le répertoire est vide."
quand : dir_contents.sortie standard == ""

Une fois que vous avez terminé, appuyez sur + X, suivie par Oui et , pour sauver le enregistrer_conditions.yaml déposer.

Dans ce playbook, j'ai défini deux tâches.

La première tâche stocke le contenu du /accueil/ansible/test3 répertoire dans le dir_contents variable.

La deuxième tâche vérifie si dir_contents.sortie standard est une chaîne vide, ou si le répertoire /accueil/ansible/test3 est vide. Si le répertoire est vide, le message Le répertoire est vide imprimera.

Exécutez le enregistrer_conditions.yaml livre de jeu, comme suit :

$ ansible-playbook playbooks/register_conditions.yaml

Comme vous pouvez le voir, le playbook s'est exécuté avec succès.

Depuis le répertoire /accueil/ansible/test3 est vide, le playbook a imprimé le message Le répertoire est vide.

Ensuite, créez un nouveau fichier dans le /accueil/ansible/test3 annuaire.

$ touch test3/monfichier

Depuis le /accueil/ansible/test3 répertoire n'est plus vide, la tâche Vérifiez si le répertoire est vide est ignoré, comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ ansible-playbook playbooks/register_conditions.yaml

Conclusion

L'Ansible S'inscrire le module est très utile pour l'automatisation du serveur. Cet article vous a montré les bases de la S'inscrire module, y compris des exemples d'utilisation de l'Ansible S'inscrire module pour le stockage et la sauvegarde de répertoires et pour l'exécution de tâches de répertoires.

Meilleurs jeux de ligne de commande pour Linux
La ligne de commande n'est pas seulement votre plus grand allié lorsque vous utilisez Linux, elle peut également être une source de divertissement car...
Meilleures applications de mappage de manette de jeu pour Linux
Si vous aimez jouer à des jeux sur Linux avec une manette de jeu au lieu d'un système de saisie clavier et souris typique, il existe des applications ...
Outils utiles pour les joueurs Linux
Si vous aimez jouer à des jeux sur Linux, il est probable que vous ayez utilisé des applications et des utilitaires comme Wine, Lutris et OBS Studio p...