Recherche de site Web

Comment installer et configurer Ansible sur Redhat Enterprise Linux 8


Ce tutoriel 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 tutoriel, vous allez apprendre :

  • Présentation d’Ansible
  • Installer et configurer Python
  • Définir SSH sans mot de passe
  • Installer Ansible
  • Test et gestion d’Ansible

Architecture Ansible.

Configuration logicielle requise et conventions utilisées

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 dès le premier jour pour les déploiements multiniveaux, Ansible modélise votre infrastructure informatique en décrivant comment tous vos systèmes sont interconnectés, plutôt qu’en gérant un seul système à la fois.

Il n’utilise aucun agent ni 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 se rapproche de l’anglais simple. Ansible fonctionne en se connectant à vos nœuds et en envoyant de petits programmes, appelés « modules Ansible » vers ceux-ci.
Ces programmes sont écrits pour être des modèles de ressources de l’état souhaité du système. Ansible exécute ensuite ces modules (via SSH par défaut) et les supprime une fois terminé.

Votre bibliothèque de modules peut résider sur n’importe quelle machine, et il n’y a pas de serveurs, de démons ou de bases de données 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 où 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) <security@redhat.com>"
 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, il suffit de taper python3 dans le terminal.

Vous auriez dû noter que pour utiliser Python 3, la commande est python3 et python2 pour Python 2. Que se passe-t-il 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 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 devrait afficher la version par défaut de Python configurée :

#python -V
Python 3.6.6

ou 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éez 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 l’utilisateuransible 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 paquets 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 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é des 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é à la gestion de petites configurations avec une poignée d’instances ainsi qu’aux environnements d’entreprise.

Articles connexes: