Cet article vous montrera comment installer plusieurs packages logiciels sur des hôtes CentOS/RHEL à l'aide de la boucle Ansible. Alors, commençons.
Conditions préalables
Si vous voulez essayer les exemples de cet article,
1) Vous devez avoir Ansible installé sur votre ordinateur.
2) Vous devez avoir au moins un hôte CentOS/RHEL 7 ou 8 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 les consulter si besoin.
Configuration d'un répertoire de projet
Avant d'aller plus loin, nous allons créer un répertoire de projet, juste pour garder les choses un peu organisées.
Pour créer le répertoire du projet centos-pkg/ et tous les sous-répertoires requis (dans votre répertoire de travail actuel), exécutez la commande suivante :
$ mkdir -pv centos-pkg/playbooks
Une fois le répertoire du projet créé, accédez au répertoire du projet, comme suit :
$ cd centos-pkg/
Ensuite, créez un hôtes fichier d'inventaire, comme suit :
$ nano hôtes
Ajoutez l'adresse IP ou le nom DNS de l'hôte (vm3.nœudkite.com, dans mon cas) de vos hôtes CentOS/RHEL dans le fichier d'inventaire (un hôte par ligne).
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
Essayez de cingler tous les hôtes CentOS/RHEL que vous avez ajoutés dans votre hôtes fichier d'inventaire, comme suit :
$ ansible all -u ansible -m ping
Comme vous pouvez le voir, mon hôte CentOS 8 est accessible.
Installation d'un seul progiciel
Cette section vous montrera comment installer un seul progiciel à l'aide du dnf ou alors Miam module d'Ansible sur vos hôtes CentOS/RHEL.
Tout d'abord, créez le nouveau playbook installer le paquet.yaml dans le cahiers/ répertoire, comme suit :
$ nano playbooks/install_package.yaml
Ensuite, tapez les lignes suivantes dans le installer le paquet.yaml déposer.
- hôtes : tousutilisateur : ansible
devenir vrai
Tâches:
- nom : Installer le package httpd
dnf :
nom : httpd
état : présent
update_cache : vrai
Une fois que vous avez terminé, enregistrez le fichier en appuyant sur
Ici, j'ai ajouté une seule tâche, Installer le paquet httpd. Le but de cette tâche est d'installer le httpd paquet sur CentOS/RHEL 8.
CentOS/RHEL 7 n'utilise pas le dnf gestionnaire de paquets, il utilise le Miam directeur chargé d'emballage. Donc, si vous utilisez CentOS/RHEL 7, changez dnf à Miam, comme indiqué dans la capture d'écran ci-dessous. Aucun autre changement n'est requis.
le Nom L'option est utilisée pour indiquer au dnf ou alors Miam module le nom du paquet que vous essayez d'installer. Dans ce cas, ce sera le httpd paquet.
le Etat L'option est utilisée pour indiquer au dnf ou alors Miam moduler l'action (je.e. installer, mettre à niveau, supprimer) il devrait prendre le paquet donné. Dans ce cas, l'action est cadeau.
Les valeurs prises en charge de la Etat option sont :
cadeau - installera le paquet s'il n'est pas déjà installé.
dernier - installera le paquet s'il n'est pas déjà installé ; s'il est déjà installé, le module vérifiera les mises à jour ; si une version mise à jour du package est disponible, il installera la nouvelle version.
absent - supprimera le paquet s'il est installé.
Si la mise à jour_cache l'option est définie sur Vrai, le cache du référentiel de packages DNF/YUM sera mis à jour avant l'installation du package.
Exécutez le installer le paquet.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/install_package.yaml
Comme vous pouvez le voir, le playbook installer le paquet.yaml exécuté avec succès.
Comme vous pouvez le voir, le httpd package est installé sur mon hôte CentOS 8, que j'ai ajouté sur mon hôtes fichier d'inventaire.
$ sudo dnf list installé | grep httpd
Si vous êtes sur CentOS/RHEL 7, utilisez le Miam gestionnaire de paquets au lieu du dnf gestionnaire de packages pour vérifier si le package est installé.
$ sudo yum list installé | grep httpd
Installation de plusieurs packages logiciels à l'aide de la boucle with_items
La section précédente de cet article vous a montré comment installer un seul package logiciel sur votre hôte CentOS/RHEL à l'aide d'Ansible dnf/Miam module. Cette section vous montrera comment installer plusieurs packages logiciels sur vos hôtes CentOS/RHEL à l'aide d'Ansible avec_éléments boucle.
Tout d'abord, créez le nouveau playbook installer_paquets.yaml, comme suit:
$ nano playbooks/install_packages.yaml
Tapez les lignes suivantes dans le installer_paquets.yaml déposer.
- hôtes : tousutilisateur : ansible
devenir vrai
Tâches:
- name: Installer tous les packages
dnf :
nom : ' élément '
état : présent
update_cache : vrai
avec_éléments :
httpd
php
vsftpd
Une fois que vous avez terminé, appuyez sur
Ici, j'ai défini les noms des packages (httpd, php, vsftpd) que je veux installer en utilisant avec_éléments boucle.
J'ai remplacé le nom du package par la variable Objet. le Objet la variable sera mise à jour avec le nom du package à chaque itération.
Exécutez le installer_paquets.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/install_packages.yaml
Comme vous pouvez le voir, le playbook installer_paquets.yaml exécuté avec succès.
le httpd, php, et vsftpd les packages sont installés sur mon hôte CentOS 8, comme vous pouvez le voir dans la capture d'écran ci-dessous.
$ sudo dnf list installé | grep httpd$ sudo dnf list installé | grep php
$ sudo dnf list installé | grep vsftpd
Installation de plusieurs packages logiciels à l'aide de la boucle Loop
À partir d'Ansible 2.5, la façon recommandée d'utiliser des boucles dans votre playbook est d'utiliser le boucle mot-clé, au lieu du avec_éléments mot-clé. C'est pourquoi vous avez vu un message d'avertissement lorsque j'ai lancé le installer_paquets.yaml playbook dans la section précédente de cet article.
Travailler avec des boucles en utilisant le boucle le mot-clé est très facile.
Tout d'abord, ouvrez le playbook installer_paquets.yaml (à partir de l'exemple précédent), comme suit :
$ nano playbooks/install_packages.yaml
Dans le installer_paquets.yaml playbook, remplacez simplement le terme avec_éléments avec le terme boucle, comme indiqué dans la capture d'écran ci-dessous. Vous n'avez pas besoin de changer quoi que ce soit d'autre.
Une fois que vous avez terminé, appuyez sur
Exécutez le installer_paquets.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/install_packages.yaml
Comme vous pouvez le voir, la tâche Installer tous les packages couru le dnf/Miam module trois fois au total ; une fois pour chaque boucle Objet.
le httpd, php, et vsftpd les packages sont installés sur mon hôte CentOS 8, comme vous pouvez le voir dans la capture d'écran ci-dessous.
$ sudo dnf list installé | grep httpd$ sudo dnf list installé | grep php
$ sudo dnf list installé | grep vsftpd
Installation de plusieurs packages logiciels à l'aide de la syntaxe de tableau
Les sections précédentes de cet article vous ont montré comment utiliser le avec_éléments et boucle boucles dans Ansible pour installer plusieurs packages logiciels sur CentOS/RHEL 7 ou 8, sans aucune répétition de code. Cette section vous montrera comment faire la même chose avec une syntaxe de tableau plus simple.
Tout d'abord, ouvrez le installer_paquets.yaml livre de jeu, comme suit :
$ nano playbooks/install_packages.yaml
Retirer le avec_éléments ou alors boucle section de la tâche et modifiez le Nom possibilité de ['httpd', 'php', vsftpd'], comme indiqué dans la capture d'écran ci-dessous.
Une fois que vous avez terminé, appuyez sur
Ici, chaque chaîne entre guillemets entre crochets ([]) est un élément de tableau (le nom du progiciel, dans mon cas). Chaque élément du tableau doit être séparé par une virgule (,). Vous pouvez ajouter autant d'éléments de tableau que vous le souhaitez. je n'ai ajouté que trois éléments, httpd, php, et vsftpd.
Exécutez le installer_paquets.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/install_packages.yaml
Comme vous pouvez le voir, les progiciels httpd, php, et vsftpd sont installés sur mon hôte CentOS 8.
$ sudo dnf list installé | grep httpd$ sudo dnf list installé | grep php
$ sudo dnf list installé | grep vsftpd
Conclusion
Cet article vous a montré comment utiliser le avec_éléments et boucle boucles, ainsi que la syntaxe Array, avec l'Ansible Miam/dnf module pour installer plusieurs packages logiciels sur vos hôtes CentOS/RHEL 7 ou 8.
Pour plus d'informations, consultez la documentation officielle d'Ansible.
[1] Documentation officielle des boucles Ansible
[2] Documentation officielle d'Ansible with_items
[3] Documentation officielle du module Ansible dnf
[4] Documentation officielle du module Ansible yum