2022-08-12 13:39 Temps de lecture : 8 min

Comment installer et configurer Ansible sur Ubuntu ?

Premiers pas avec Ansible sur Ubuntu : Optimisation du provisionnement et de la gestion de la configuration.

La gestion de la configuration est un élément fondamental du cycle de vie DevOps, facilitant l'automatisation et l'orchestration de l'infrastructure informatique.

De nombreux outils existent pour la gestion de configuration, tels que Puppet, Ansible, Chef et SaltStack. Ansible se distingue comme l'un des outils DevOps les plus répandus, capable de gérer aisément des milliers de serveurs et toute une infrastructure informatique.

Cet article abordera les points suivants :

  • Processus d'installation
  • Échange de clés SSH
  • Configuration du client Ansible
  • Tests de connectivité Ansible

Installation d'Ansible

Pour simplifier, nous allons déployer Ansible sur deux serveurs. L'un agira comme le serveur Ansible (ansible-server) et l'autre comme client Ansible (ansible-client), avec les adresses IP respectives :

  • ansible-server – 10.0.0.1
  • ansible-client – 10.0.0.25

L'installation est simple et doit être exécutée sur chaque serveur où Ansible est requis. Dans ce cas, sur les deux serveurs mentionnés.

  • Exécutez la commande ci-dessous pour installer les composants nécessaires à l'installation d'Ansible.
[email protected]:~# apt install software-properties-common
  • Ajoutez le dépôt contenant le package Ansible.
[email protected]:~# apt-add-repository --yes --update ppa:ansible/ansible
  • Mettez à jour l'outil de gestion de paquets (apt).
[email protected]:~# apt update
  • Enfin, lancez la commande ci-dessous pour procéder à l'installation.
[email protected]:~# apt install ansible

L'installation du package prendra quelques instants.

Comment vérifier que l'installation a réussi et quelle version est installée ?

Rien de plus simple. Utilisez la commande --version avec Ansible comme suit :

[email protected]:~# ansible --version
ansible 2.8.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]
[email protected]:~#

Comme vous le constatez, Ansible 2.8.1 est installé, et les informations relatives à l'emplacement du fichier de configuration et du module Python sont fournies.

L'étape suivante est l'échange de clés SSH, permettant ainsi au serveur et au client de communiquer.

Échange de clés SSH

Ansible communique avec ses clients via SSH (Secure Shell).

Nous allons commencer par générer une clé publique sur le serveur Ansible, qui sera ensuite copiée sur le client Ansible.

Assurez-vous d'être connecté en tant qu'utilisateur root.

  • Générez la clé à l'aide de la commande ssh-keygen, comme indiqué ci-dessous :
[email protected]:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    =.+oo .      |
|   . B.B.= .     |
|  . o @oE +      |
|   . *oO * .     |
|    o++.S + .    |
|   .o +o . +     |
|    .o..o +      |
|     ..o o .     |
|       .o o.     |
+----[SHA256]-----+
[email protected]:~#

Une clé publique a été générée dans le répertoire .ssh, dont le chemin d'accès complet est /root/.ssh/id_rsa.pub.

Important : Vérifiez que les fichiers de clé privée et publique ne sont pas accessibles en lecture à tous. Vous pouvez utiliser la commande ls pour vérifier les permissions.

cd /root/.ssh
[email protected]:~# 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 les permissions sont incorrectes, utilisez la commande chmod pour les modifier.

Exemple :

chmod 400 id_rsa
chmod 400 id_rsa.pub

Copions la clé publique sur l'hôte Ansible, dont l'adresse IP est 10.0.0.25

[email protected]:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established.
ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs.
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
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

[email protected]:~/.ssh#

La sortie ci-dessus indique qu'une clé a été ajoutée avec succès. L'échange de clés SSH est donc terminé.

Nous allons maintenant configurer le client Ansible.

Configuration du client Ansible

Il est supposé que vous avez déjà installé Ansible sur le serveur client, comme décrit dans les étapes précédentes.

La configuration du client consiste à informer le serveur Ansible de l'existence des clients. Voici comment procéder :

  • Connectez-vous au serveur Ansible.
  • Rendez-vous dans le répertoire /etc/ansible.
  • Ajoutez les lignes suivantes dans le fichier hosts, à l'aide de votre éditeur favori :
[Client] 
node1 ansible_ssh_host=10.0.0.25

Test Ansible

Si vous avez suivi correctement toutes les étapes, vous devriez obtenir un message SUCCESS en exécutant la commande ci-dessous sur le serveur Ansible.

[email protected]:~/.ssh# ansible -m ping Client
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}
[email protected]:~/.ssh#

Cette commande envoie un ping au client pour tester la connectivité.

Conclusion

J'espère que ce guide vous a donné une base pour commencer à installer et expérimenter Ansible. Restez à l'écoute pour d'autres tutoriels Ansible ou consultez ce cours Udemy Mastering Ansible.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.