Ce didacticiel couvre étape par étape l'installation et la configuration d'Ansible sur Redhat Enterprise Linux 8.
Ansible est le principal système de gestion de configuration Open Source. Il permet aux administrateurs et aux équipes d'exploitation de contrôler facilement des milliers de serveurs à partir d'une machine centrale sans y installer d'agents.
Dans ce didacticiel, vous apprendrez :
- Présentation d'Ansible
- Installer et configurer Python
- Définir SSH sans mot de passe
- Installer Ansible
- Tester et gérer Ansible

Configuration logicielle requise et conventions utilisées
Catégorie | Exigences, conventions ou version du logiciel utilisée |
---|---|
Système | Red Hat Enterprise Linux 8 |
Logiciel | Python3, Ansible |
Autre | Accès privilégié à votre système Linux en tant que root ou via le sudo commande. |
Conventions | # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié |
Présentation d'Ansible
Ansible est un moteur d'automatisation informatique radicalement simple qui automatise le provisionnement du cloud, la gestion de la configuration, le déploiement d'applications, l'orchestration intra-service et de nombreux autres besoins informatiques.
Conçu pour les déploiements à plusieurs niveaux depuis le premier jour, Ansible modélise votre infrastructure informatique en décrivant comment tous vos systèmes sont interdépendants, plutôt que de simplement gérer un système à la fois.
Il n'utilise aucun agent et aucune infrastructure de sécurité personnalisée supplémentaire, il est donc facile à déployer - et surtout, il utilise un langage très simple (YAML, sous la forme d'Ansible Playbooks) qui vous permet de décrire vos tâches d'automatisation d'une manière qui approche pur anglais. Ansible fonctionne en se connectant à vos nœuds et en leur envoyant de petits programmes, appelés "modules Ansible".
Ces programmes sont écrits pour être des modèles de ressources de l'état souhaité du système. Ansible exécute ensuite ces modules (sur SSH par défaut) et les supprime une fois terminé.
Votre bibliothèque de modules peut résider sur n'importe quelle machine et aucun serveur, démon ou base de données n'est requis. En règle générale, vous travaillerez avec votre programme de terminal préféré, un éditeur de texte et probablement un système de contrôle de version pour suivre les modifications apportées à votre contenu.
Installer et configurer Python
La version par défaut de Python dans RHEL 8 est Python 3.6. Mais Python 2 reste disponible dans RHEL 8. Si, pour une raison quelconque, Python 3.6 est absent de l'installation de Red Hat Enterprise Linux 8, vous devrez l'installer manuellement.
Python 3.6 peut être installé sur RHEL 8 en exécutant la commande ci-dessous sur votre terminal. Python doit être installé à la fois sur le serveur Ansible et sur tous les hôtes/clients auxquels il se connectera.
# yum install python3 Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 8:59:59 ago on Sun 03 Feb 2019 11:20:51 PM +04. Dependencies resolved. ====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing: python36 x86_64 3.6.6-17.el8+2102+a4bbd900 rhel-8-for-x86_64-appstream-beta-rpms 22 k Enabling module streams: python36 3.6 Transaction Summary ====================================================================================================================================================== Install 1 Package Total download size: 22 k Installed size: 22 k Is this ok [y/N]: y Downloading Packages: python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm 6.0 kB/s | 22 kB 00:03 ------------------------------------------------------------------------------------------------------------------------------------------------------ Total 6.0 kB/s | 22 kB 00:03 warning: /var/cache/dnf/rhel-8-for-x86_64-appstream-beta-rpms-64aba9de5ea7e089/packages/python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f21541eb: NOKEY Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) 3.2 kB/s | 3.3 kB 00:01 Importing GPG key 0xF21541EB: Userid : "Red Hat, Inc. (beta key 2) <[email protected]>" Fingerprint: B08B 659E E86A F623 BC90 E8DB 938A 80CA F215 41EB From : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta Is this ok [y/N]: y ... Installed: python36-3.6.6-17.el8+2102+a4bbd900.x86_64 Complete!
Pour utiliser Python 3, tapez simplement python3
dans le terminal.
Vous devez avoir noté que pour utiliser Python 3, la commande est python3 et python2 pour Python 2. Et si vos applications sont configurées pour faire référence à python qui n'est pas disponible à l'échelle du système. Vous obtiendrez l'erreur bash ci-dessous.
# python -bash: python: command not found
Vous pouvez utiliser le mécanisme des alternatives pour activer la commande python non versionnée à l'échelle du système et la définir sur une version spécifique. Pour définir Python 3 par défaut, exécutez la commande suivante.
# alternatives --set python /usr/bin/python3
L'exécution de python -V doit afficher la version Python par défaut configurée :
#python -V Python 3.6.6
soit en démarrant une console Python :
# python Python 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Définir SSH sans mot de passe
Créer l'utilisateur ansible
sur tous les hôtes :
# useradd ansible ; echo "" | passwd --stdin ansible
Faites l'entrée nécessaire dans le fichier sudoers /etc/sudoers
pour un utilisateur ansible pour un accès sudo sans mot de passe :
ansible ALL=(ALL) NOPASSWD: ALL
Générez maintenant la clé SSH dans Ansible Server :
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: SHA256:wNt/uNePRkrV+Hhv/DJgteXK2BjOGvPbr9yNigXM2EM ansible@rhel8-ansible-server The key's randomart image is: +---[RSA 2048]----+ | | | . | | o E o | | + * + o| | . S * o * | | . += + +| | ==o@ +.| | OBoO+=| | +o++*BB| +----[SHA256]-----+
Copiez-le sur des serveurs distants en tant qu'utilisateur ansible :
$ ssh-copy-id ansible@rhel8-ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'rhel8-ansible-client (192.168.1.109)' can't be established. ECDSA key fingerprint is SHA256:e+NfCeK/kvnignWDHgFvIkHjBWwghIIjJkfjygR7NkI. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /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 ansible@rhel8-ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'ansible@rhel8-ansible-client'" and check to make sure that only the key(s) you wanted were added.
Installer Ansible
Une fois Python installé, procédez à l'installation de Pip qui est un gestionnaire de packages Python que nous utiliserons pour installer Ansible :
# yum -y install python3-pip Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 9:03:18 ago on Sun 03 Feb 2019 11:20:51 PM +04. Package python3-pip-9.0.3-4.el8.noarch is already installed. Dependencies resolved. Nothing to do. Complete!
Une fois que nous avons pip3
installé, utilisez-le pour installer Ansible dans le système de gestion Ansible en tant qu'utilisateur ansible.
$ pip3 install ansible --user
Vous pouvez voir Ansible installé à l'aide de la commande suivante :
$ ansible --version ansible 2.7.6 config file = None configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/ansible/.local/lib/python3.6/site-packages/ansible executable location = /home/ansible/.local/bin/ansible python version = 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Test et gestion
Créez le fichier d'inventaire Ansible, la valeur par défaut est /etc/ansible/hosts
mais vous pouvez copier le fichier hosts dans le répertoire personnel de l'utilisateur ansible. Vous pouvez également créer un groupe d'hôtes distants comme ci-dessous dans le fichier hosts.
[web]
192.168.1.105
[db]
192.168.1.107
[app]
192.168.1.108
192.168.1.109
192.168.1.110
Vous pouvez utiliser le module ping pour tester Ansible et après une exécution réussie, vous pouvez voir la sortie ci-dessous.
$ ansible -i hosts 192.168.1.109 -m ping 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" }
L'option -i est utilisée pour fournir le chemin d'accès au fichier d'inventaire. Vous devriez obtenir le même résultat pour le nom du groupe "app".
$ ansible -i hosts app -m ping 192.168.1.108 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.110 | SUCCESS => { "changed": false, "ping": "pong" }
Conclusion
La simplicité d'Ansible et sa capacité à réduire la complexité d'autres outils en ont fait un candidat fiable pour votre environnement. Sa principale préoccupation est la sécurité et la fiabilité. Il utilise OpenSSH pour le transport, et le langage est conçu autour de l'auditabilité même par ceux qui ne sont pas familiers avec le programme. Ansible est suffisamment adapté pour gérer à la fois les petites configurations avec une poignée d'instances et les environnements d'entreprise.