Conditions préalables
Si vous souhaitez essayer les exemples de cet article, vous devez:
1) Ayez une installation anable sur votre ordinateur.
2) Ayez un hôte Ubuntu configuré pour ANSIBLE AUTOMATION.
Il existe de nombreux articles sur Linuxhint dédiés à l'installation de Ansible et à la configuration des hôtes pour ANSIBLE AUTOMATION. Vous pouvez vérifier ces articles si nécessaire.
Configuration d'un répertoire de projet
Avant d'aller plus loin, créez un nouveau répertoire de projet ANSIBLE, juste pour garder les choses un peu organisées.
Pour créer le répertoire de projet registre-Demo / et tous les sous-répertoires requis (dans votre répertoire de travail actuel), exécutez la commande suivante:
$ mkdir -pv registre-démo / playbooks
Une fois le répertoire du projet créé, accédez au répertoire du projet, comme suit:
$ CD Register-Demo /
Créer un hôtes Fichier d'inventaire, comme suit:
$ hôtes nano
Ajoutez le nom IP ou DNS de l'hôte 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.nodekite.com dans le ubuntu20 groupe.
Une fois que vous avez terminé, enregistrez le fichier en appuyant sur + X, suivie par Y et .
Créer un fichier de configuration anible anable.CFG Dans votre répertoire de projet, comme suit:
$ nano anible.CFG
Ensuite, tapez les lignes suivantes dans le anable.CFG déposer:
[Par défaut]Une fois que vous avez terminé, enregistrez le anable.CFG fichier en appuyant sur + X, suivie par Y et .
Maintenant, essayez de cingler votre hôte Ubuntu, comme suit:
$ anible ubuntu20 -u anible -m ping
Comme vous pouvez le voir, mon ubuntu 20.04 hôte VM3.nodekite.com est accessible.
Exemple 1: les bases
Dans cet exemple, je vais vous montrer quelques-unes des bases de l'ANSIBLE enregistrer module. J'utiliserai ANSIBLE pour générer un mot de passe aléatoire dans mon Ubuntu 20.04 hôte en utilisant le pwgen commande, stockez le mot de passe dans une variable en utilisant le enregistrer module et imprimez le mot de passe à l'écran.
Tout d'abord, créez le nouveau livre de jeu générer_passe.yaml dans le Playbooks / Répertoire, comme suit:
$ nano playbooks / generate_pass.yamlTapez les lignes suivantes dans le générer_passe.yaml déposer:
- Hôtes: Ubuntu20Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le générer_passe.yaml déposer.
La ligne suivante indique à ANSIBLE d'exécuter le livre de jeu générer_passe.yaml sur chaque hôte du ubuntu20 groupe. Dans mon cas, le livre de jeu sera exécuté sur l'hôte VM3.nodekite.com.
Dans ce livre de jeu, je définirai trois tâches.
La première tâche réalisera que le pwgen le package est installé.
La deuxième tâche générera un mot de passe aléatoire de 30 caractères à l'aide du pwgen commande. J'utiliserai le enregistrer module pour stocker le mot de passe généré dans le mypasse variable.
La troisième tâche imprimera le mypasse variable en utilisant l'anible déboguer module.
Exécutez le livre de jeu générer_passe.yaml Utilisation de la commande suivante:
$ anible-playbook playbooks / generate_pass.yamlComme vous pouvez le voir, le playbook a fonctionné avec succès. Un mot de passe a également été généré.
Mais pourquoi la variable mypasse Imprimer tant d'articles?
Eh bien, la variable mypasse est un objet qui contient des propriétés importantes.
Les propriétés les plus importantes de chacun des enregistrer Les variables sont les suivantes:
CMD - La commande qui a couru pour générer la sortie.
stdout - La sortie de la commande.
stderr - La sortie d'erreur de la commande.
commencer - La date et l'heure où la commande a commencé à s'exécuter.
fin - La date et l'heure à laquelle la commande a terminé l'exécution.
delta - Le temps pris pour exécuter la commande. C'est la différence entre le fin et le commencer propriétés.
stdout_lines - Un tableau contenant chaque ligne de sortie de la commande. Pareil que stdout, mais stdout sépare les lignes à l'aide d'un Newline (\ n) caractères 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 à l'aide de caractères de Newlines (\ n) au lieu de tableaux.
Si vous souhaitez simplement imprimer / accéder à la chaîne de mot de passe (ce qui est très probable), vous pouvez imprimer / accéder au stdout propriété du mypasse variable dans votre manuel, comme marqué dans la capture d'écran ci-dessous.
$ nano playbooks / generate_pass.yamlUne fois que vous avez terminé, exécutez le livre de jeu générer_passe.yaml encore. 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 enregistrer module.
Exemple 2: Contenu des répertoires de magasin
Dans cet exemple, je vais vous montrer comment stocker le contenu d'un répertoire dans une variable en utilisant l'ANSIBLE enregistrer module, ainsi que comment les itérer sur eux.
Tout d'abord, créez le nouveau livre de jeu get_dir_contents.yaml dans le Playbooks / annuaire.
$ nano playbooks / get_dir_contents.yamlEnsuite, tapez les lignes suivantes dans le get_dir_contents.yaml Playbook:
- Hôtes: Ubuntu20Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le générer_passe.yaml déposer.
Dans ce livre de jeu, je définirai deux tâches.
La première tâche répertorie tous les contenus du / Home / Ansible répertoire et les stocke dans le dir_contents variable.
La deuxième tâche imprime le dir_contents variable.
Courir le get_dir_contents.yaml Playbook, comme suit.
$ anible-playbook playbooks / get_dir_contents.yamlComme vous pouvez le voir, le stdout_lines propriété stockée le contenu de l'annuaire en tant que tableau. Le stdout 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 Newline (\ n). Dans cet exemple, le stdout_lines la propriété est facile à travailler avec.
Ensuite, itérez sur le contenu du répertoire à l'aide d'une boucle.
Pour ce faire, ouvrez le get_dir_contents.yaml Playbook et modifier la deuxième tâche, comme marqué dans la capture d'écran ci-dessous.
$ nano playbooks / get_dir_contents.yamlIci, je itère sur le dir_contents.stdout_lines tableau à l'aide d'une boucle et imprimer les éléments de tableau à l'aide de l'anible déboguer module. Dans cette tâche, le article La variable est une variable de boucle utilisée pour itérer sur les éléments du tableau.
Courir le get_dir_contents.yaml Playbook, comme suit:
$ anible-playbook playbooks / get_dir_contents.yamlComme vous pouvez le voir, le contenu du / Home / Ansible Le répertoire est imprimé sur l'écran.
Exemple 3: répertoire de sauvegarde
Dans cet exemple, je vais vous montrer comment sauvegarder un répertoire en utilisant l'ANSIBLE enregistrer, déposer, et copie modules.
Tout d'abord, créez le nouveau livre de jeu backup_home_dir.yaml dans le Playbooks / Répertoire, comme suit:
$ nano playbooks / backup_home_dir.yamlEnsuite, tapez les lignes suivantes dans le backup_home_dir.yaml déposer.
- Hôtes: Ubuntu20Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le backup_home_dir.yaml déposer.
Dans ce livre de jeu, je définirai trois tâches.
La première tâche stocke le contenu du / Home / Ansible répertoire (le répertoire que je sauvegarde) dans le dir_contents variable en utilisant l'anible enregistrer module.
La deuxième tâche crée un nouveau répertoire / tmp / anible Utilisation de l'ANSIBLE déposer module. C'est le répertoire où la sauvegarde sera stockée.
La troisième tâche boucle à travers le dir_contents.stdout_lines tableau et utilise l'anible copie module pour copier chaque répertoire dans le / tmp / anible / annuaire.
Courir le backup_home_dir.yaml Playbook, comme suit:
$ anible-playbook playbooks / backup_home_dir.yamlComme vous pouvez le voir, sur mon Ubuntu 20.04 hôte LTS, la sauvegarde a réussi.
Exemple 4: Exécutez ou sautez les tâches
Dans cet exemple, je vais vous montrer comment exécuter ou sauter des tâches, en fonction de la variable que vous avez enregistrée, en utilisant le enregistrer module.
Tout d'abord, créez le nouveau livre de jeu registre_conditions.yaml dans le Playbooks / Répertoire comme suit:
$ nano playbooks / registre_conditions.yamlEnsuite, tapez les lignes suivantes dans le registre_conditions.yaml déposer.
- Hôtes: Ubuntu20Une fois que vous avez terminé, appuyez sur + X, suivie par Y et , Pour sauver le registre_conditions.yaml déposer.
Dans ce livre de jeu, j'ai défini deux tâches.
La première tâche stocke le contenu du / home / anible / test3 répertoire dans le dir_contents variable.
La deuxième tâche vérifie si dir_contents.stdout est une chaîne vide, ou si le répertoire / home / anible / test3 est vide. Si le répertoire est vide, le message Le répertoire est vide Will imprimer.
Courir le registre_conditions.yaml Playbook, comme suit:
$ anible-playbook playbooks / registre_conditions.yamlComme vous pouvez le voir, le playbook a fonctionné avec succès.
Depuis le répertoire / home / anible / test3 est vide, le playbook a imprimé le message Le répertoire est vide.
Ensuite, créez un nouveau fichier dans le / home / anible / test3 annuaire.
$ touch test3 / myfile
Depuis le / home / anible / test3 Le répertoire n'est plus vide, la tâche Vérifiez si le répertoire est vide est sauté, comme vous pouvez le voir dans la capture d'écran ci-dessous.
$ anible-playbook playbooks / registre_conditions.yamlConclusion
Le anible enregistrer Le module est très utile pour l'automatisation du serveur. Cet article vous a montré les bases du enregistrer module, y compris des exemples d'utilisation de l'anible enregistrer Module pour le stockage et la sauvegarde du répertoire, et pour l'exécution de tâches de répertoire.