Ansible est un outil d'automatisation informatique open source utilisé pour automatiser la gestion de la configuration, le provisionnement, le déploiement d'applications, l'orchestration et de nombreux autres processus informatiques sans qu'il soit nécessaire d'installer des agents sur les nœuds clients. Il s'appuie sur le protocole SSH pour communiquer avec les nœuds clients. Ansible offre une facilité d'utilisation et d'installation par rapport à d'autres outils similaires tels que puppet, chef, terraform, etc. Dans ce didacticiel, nous apprendrons comment installer Ansible sur CentOS 8 Linux et le configurer.
Installer Ansible sur CentOS 8 Linux
Étape 1 : Installer et activer EPEL
référentiel
[root@install-ansible ~]# dnf install epel-release -y
Étape 2 : Téléchargez l'index distant des packages dans le cache de fichiers local pour accélérer les dnf
suivants commandes.
[root@install-ansible ~]# dnf makecache CentOS Linux 8 - AppStream 2.6 kB/s | 4.3 kB 00:01 CentOS Linux 8 - BaseOS 2.6 kB/s | 3.9 kB 00:01 CentOS Linux 8 - Extras 1.0 kB/s | 1.5 kB 00:01 Extra Packages for Enterprise Linux 8 - x86_64 8.7 kB/s | 11 kB 00:01 Extra Packages for Enterprise Linux Modular 8 - x86_64 9.6 kB/s | 10 kB 00:01 Remi's Modular repository for Enterprise Linux 8 - x86_64 501 B/s | 833 B 00:01 Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 802 B/s | 833 B 00:01 Metadata cache created.
Étape 3 : Installer Ansible
[root@install-ansible ~]# dnf install ansible -y Last metadata expiration check: 0:02:17 ago on Tue 01 Mar 2022 10:28:48 AM IST. Dependencies resolved. ============================================================================================================================================================= Package Architecture Version Repository Size ============================================================================================================================================================= Installing: ansible noarch 2.9.27-1.el8 epel 17 M Installing dependencies: python3-bcrypt x86_64 3.1.6-2.el8.1 epel 44 k python3-jmespath noarch 0.9.0-11.el8 appstream 45 k python3-pyasn1 noarch 0.3.7-6.el8 appstream 126 k python3-pynacl x86_64 1.3.0-5.el8 epel 100 k sshpass x86_64 1.06-9.el8 epel 27 k Installing weak dependencies: python3-paramiko noarch 2.4.3-1.el8 epel 289 k Transaction Summary ============================================================================================================================================================= Install 7 Packages Installed: ansible-2.9.27-1.el8.noarch python3-bcrypt-3.1.6-2.el8.1.x86_64 python3-jmespath-0.9.0-11.el8.noarch python3-paramiko-2.4.3-1.el8.noarch python3-pyasn1-0.3.7-6.el8.noarch python3-pynacl-1.3.0-5.el8.x86_64 sshpass-1.06-9.el8.x86_64 Complete!
Étape 4 : Vérifier l'installation d'ansible
[root@install-ansible ~]# ansible --version ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
Configurer Ansible sur CentOS 8
Considérez l'architecture ci-dessous pour ce tutoriel. Vous pouvez étendre la même chose à un nombre n de clients.
Gestion/administration des clients depuis Ansible Server
Pour gérer les clients, SSH doit être installé et en cours d'exécution. Les ports SSH doivent être ouverts et accessibles depuis le serveur Ansible.
Étape 5 : Ouvrez /etc/hosts
fichier sur ansible-server
Dans cet article, nous utiliserons /etc/hosts
fichier pour la résolution du nom DNS de l'adresse IP des clients.
[root@ansible-server ~]# vim /etc/hostsAdresse IP ou noms DNS pour les clients
Vous pouvez utiliser l'adresse IP ou les noms DNS des clients à gérer
Ajoutez les entrées ci-dessous sur l'adresse IP et le nom d'hôte du client Ansible
10.180.10.122 ansible-client
Configurer l'authentification sans mot de passe SSH
Étape 6 : Générez des clés SSH sur Ansible Server (Management Node) sans être invité à entrer une phrase de passe.
[centos@ansible-server ~]$ ssh-keygen -f id_rsa -t rsa -N '' Generating public/private rsa key pair. Your identification has been saved in id_rsa. Your public key has been saved in id_rsa.pub. The key fingerprint is: SHA256:vqvgSILGrVxCDsLuORbJojxiYDEFEFlNQi5ZrHeqYhE centos@ansible-server The key's randomart image is: +---[RSA 3072]----+ |+B*o. | |.+.o. | |o.o | |oE. . | |++=o S | |@*o . | |OB+o. . | |OX=o . . | |*=+ . ..o. | +----[SHA256]-----+
Étape 7 : Copiez les clés SSH dans Ansible Client
[centos@ansible-server ~]$ ssh-copy-id centos@ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/centos/.ssh/id_rsa.pub" The authenticity of host 'ansible-client (10.180.141.122)' can't be established. ECDSA key fingerprint is SHA256:oDKa1jiDVmPzHmD0HqKr5v10xhalFVbklrdudxAFx5M. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys centos@ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'centos@ansible-client'" and check to make sure that only the key(s) you wanted were added.Invite de mot de passe pour l'utilisateur centos sur ansible-client
Tapez le mot de passe de connexion de l'utilisateur centos sur Ansible-client pour la première fois. Une fois les clés SSH copiées, vous pourrez vous connecter sans mot de passe
Étape 8 : Vérifier la connexion sans mot de passe
[centos@ansible-server ~]$ ssh centos@ansible-client Last login: Tue Mar 1 05:57:15 2022 from 10.180.6.115 [centos@ansible-client ~]$
Étape 9 : Accès sudo pour centos
utilisateur sur ansible-client
Assurez-vous que les centos
l'utilisateur sur ansible-client a un accès sudo sans mot de passe. Cela aide ansible à exécuter n'importe quel root
commandes sur ansible-client en utilisant centos
utilisateur.
# visudo ## Add the below content centos ALL=(ALL) NOPASSWD:ALL
Maintenant, le client ansible est prêt à être géré à partir du serveur ansible (nœud de gestion) à l'aide de centos
utilisateur sur ansible-client.
Comment utiliser Ansible
Étape 10 : Créer un inventaire Ansible
Ansible conserve une liste de toutes les informations du client distant qu'il gère dans un fichier appelé inventory
dossier. Le fichier d'inventaire Ansible est juste un simple fichier texte brut et l'emplacement du fichier par défaut est :/etc/ansible/hosts
Nous pouvons créer un fichier d'inventaire Ansible à un autre emplacement que l'emplacement par défaut.
[centos@ansible-server ~]$ mkdir ~/ansible [centos@ansible-server ~]$ cd ~/ansible [centos@ansible-server ansible]$ vim hosts
Ajouter toutes les entrées du client ansible
ansible-client ansible_user=centosOption ansible_user dans le fichier ansible/hosts
L'option ansible_user est utilisée pour définir l'utilisateur sur le client ansible qui exécutera les commandes.
Fichier d'inventaire Ansible - Mélange de nom d'hôte et d'adresse IPVous pouvez également mélanger les adresses IP et les noms DNS des clients distants dans le fichier d'inventaire
10.180.10.122 ansible_user=centosRegrouper les clients distants dans le fichier d'inventaire
Vous pouvez également regrouper les clients distants dans le fichier d'inventaire en fonction de leur utilisation. Par exemple, si vous avez 4 clients en tant que serveur Web et 2 en tant que serveur de base de données.
[centos] ansible-client ansible_user=centos
Étape 11 : Lister tous les hôtes du fichier d'inventaire
[centos@ansible-server ansible]$ ansible -i hosts --list-hosts all hosts (1): ansible-client
Étape 12 : Vérifiez que les hôtes sont actifs
[centos@ansible-server ansible]$ ansible -i hosts -m ping all ansible-client | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Étape 13 : Exécutez des commandes sur le client ansible distant (basé sur tous/nom de groupe)
[centos@ansible-server ansible]$ ansible -i hosts -m shell -a "more /etc/redhat-release" ansible-client ansible-client | CHANGED | rc=0 >> CentOS Linux release 7.8.2003 (Core)
C'est ça! Commencez maintenant à gérer vos clients distants à l'aide d'ansible à votre manière.
Ansible Playbook aide à gérer vos serveurs plus facilement en réalisant des actions informatiques complexes exécutées avec une implication humaine limitée ou nulle. Nous essaierons de couvrir Ansible Playbook dans notre prochain article.