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
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
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 : ubuntu20utilisateur : 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
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 : ubuntu20utilisateur : 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
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.yamlComme 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.yamlComme 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 : ubuntu20utilisateur : 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
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 : ubuntu20utilisateur : 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
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.yamlComme 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.