Démarrer avec Ansible sur Ubuntu pour améliorer le provisionnement de l’environnement et la gestion de la configuration.
La gestion de la configuration est une étape cruciale du cycle de vie DevOps. Elle contribue à l’automatisation et à l’orchestration de l’infrastructure informatique.
Il existe plusieurs outils de gestion de la configuration, par exemple Puppet, Ansible, Chef et SaltStack. Et, bien sûr, Ansible est l’un des outils les plus populaires en matière de DevOps. Il peut gérer des milliers de serveurs et l’ensemble de votre infrastructure informatique en toute simplicité.
Dans cet article, nous aborderons les points suivants.
- Installation d’Ansible
- Échange de clés SSH
- Configuration du client Ansible
- Test d’Ansible
Installation d’Ansible
Pour rester simple, essayons d’utiliser Ansible sur deux serveurs. L’un sera ansible-server et l’autre ansible-client avec les IP suivantes.
- ansible-server – 10.0.0.1
- ansible-client – 10.0.0.25
L’installation est simple… les opérations suivantes doivent être effectuées sur tous les serveurs sur lesquels vous souhaitez utiliser Ansible. Dans ce cas, sur les deux serveurs ci-dessus.
- Exécutez la commande suivante pour installer les logiciels nécessaires à l’installation d’Ansible.
root@ansible-server:~# apt install software-properties-common
- Installez le référentiel avec le paquetage ansible.
root@ansible-server:~# apt-add-repository --yes --update ppa:ansible/ansible
- Mettez à jour l’outil d’empaquetage avancé (apt)
root@ansible-server:~# apt update
- Et enfin, exécutez la commande ci-dessous pour installer
root@ansible-server:~# apt install ansible
L’installation des paquets nécessaires prendra quelques secondes.
Comment s’assurer de son installation et de sa version ?
Eh bien, c’est facile. Vous pouvez utiliser la syntaxe --version
avec ansible pour le savoir comme ci-dessous.
root@ansible-server:~# ansible --version
ansible 2.8.1
fichier de configuration = /etc/ansible/ansible.cfg
chemin de recherche des modules configurés = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
emplacement du module python ansible = /usr/lib/python2.7/dist-packages/ansible
emplacement de l'exécutable = /usr/bin/ansible
version python = 2.7.15 (par défaut, Nov 27 2018, 23:36:35) [GCC 7.3.0]
root@ansible-server:~#
Comme vous pouvez le voir, Ansible 2.8.1 est installé et il fournit les informations nécessaires telles que l’emplacement du fichier de configuration, le module python.
Ensuite, nous devons procéder à l’échange de clés SSH afin que le serveur et le client puissent communiquer entre eux.
Échange de clés SSH
Ansible se connecte à son client via SSH (Secure shell).
Nous allons d’abord générer une clé publique sur le serveur ansible, qui doit être copiée sur le client ansible.
Assurez-vous d’être connecté en tant qu’utilisateur root.
- Générez la clé en utilisant la commande
ssh-keygen
comme indiqué ci-dessous
root@ansible-server:~# ssh-keygen
Génération d'une paire de clés rsa publiques/privées.
Saisissez le fichier dans lequel vous souhaitez enregistrer la clé (/root/.ssh/id_rsa) :
Saisissez la phrase d'authentification (vide si vous n'avez pas de phrase d'authentification) :
Saisissez à nouveau la même phrase de passe :
Votre identification a été sauvegardée dans /root/.ssh/id_rsa.
Votre clé publique a été enregistrée dans /root/.ssh/id_rsa.pub.
L'empreinte de la clé est :
SHA256:cDapZBESo 8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A root@ansible-server
L'image aléatoire de la clé est :
---[RSA 2048]----
| =. oo . |
| . B.B.=
| . o @oE |
| . *oO * . |
| o .S . |
| . |
| .o..o |
| ..o o . |
| .o o. |
----[SHA256]-----
root@ansible-server:~#
Comme vous l’avez remarqué, il a généré une clé publique dans le dossier .ssh.
Le chemin complet est /root/.ssh/id_rsa.pub
Remarque: assurez-vous que les fichiers de clés privées et publiques ne sont pas lisibles par le monde entier. Vous pouvez lister les fichiers pour les vérifier.
- Allez dans le dossier .ssh
cd /root/.ssh
- Listez les fichiers
root@ubuntu:~# ls -l
-rw------- 1 root root 1679 Jun 19 00:37 id_rsa
-rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub
Si vous remarquez que la permission est incorrecte, vous pouvez la modifier en utilisant la commande chmod
Ex :
chmod 400 id_rsa
chmod 400 id_rsa.pub
Copions la clé publique sur l’hôte Ansible dont l’adresse IP est 192.168.56.101
root@ansible-server:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.25
/usr/bin/ssh-copy-id : INFO : Source de la (des) clé(s) à installer : "/root/.ssh/id_rsa.pub"
L'authenticité de l'hôte '10.0.0.25 (10.0.0.25)' ne peut être établie.
L'empreinte de la clé ECDSA est SHA256:eXduPrfV0mhxUcpsZWg 0oXDim7bHb90caA/Rt79cIs.
Êtes-vous sûr de vouloir continuer à vous connecter (oui/non) ? oui
/usr/bin/ssh-copy-id : INFO : tentative de connexion avec la (les) nouvelle(s) clé(s), pour filtrer celles qui sont déjà installées
/usr/bin/ssh-copy-id : INFO : 1 clé(s) reste à installer -- si on vous le demande maintenant, c'est pour installer les nouvelles clés
le mot de passe de root@10.0.0.25 :
Nombre de clés ajoutées : 1
Essayez maintenant de vous connecter à la machine, avec : "ssh 'root@10.0.0.25'"
et vérifiez que seules les clés que vous vouliez ont été ajoutées.
root@ansible-server:~/.ssh#
Vous pouvez voir dans la sortie ci-dessus qu’une clé a été ajoutée avec succès. Cela indique que la clé SSH est échangée.
Ensuite, nous allons configurer un client Ansible.
Configuration du client Ansible
Je suppose que vous avez déjà suivi les étapes d’installation d’Ansible sur le serveur client comme expliqué dans les étapes précédentes.
La configuration du client ou de l’hôte ne consiste qu’à informer le serveur Ansible de l’existence des clients. Et, pour ce faire :
- Connectez-vous au serveur Ansible
- Allez dans /etc/ansible
- Ajoutez ce qui suit dans le fichier hosts en utilisant votre éditeur préféré
[Client]
node1 ansible_ssh_host=10.0.0.25
- Sauvegardez le fichier hosts
Test Ansible
Si vous avez suivi toutes les étapes correctement, vous obtiendrez un message SUCCESS lorsque vous lancerez la commande ci-dessous sur le serveur ansible.
root@ansible-server:~/.ssh# ansible -m ping Client
node1 | SUCCESS => {
"ansible_facts" : {
"discovered_interpreter_python" : "/usr/bin/python3"
},
"changed" : faux,
"ping" : "pong"
}
root@ansible-server:~/.ssh#
Les pings ci-dessus sont envoyés au client pour tester la connectivité et confirmer si elle est bonne ou non.
Conclusion
J’espère que cela vous a donné une idée pour commencer à installer Ansible et à vous amuser. Restez à l’écoute pour d’autres tutoriels Ansible ou consultez le cours Udemy Mastering Ansible.