Installation et configuration de Ansible
Contexte
Ansible est un outil d’automatisation IT utilisé pour gérer la configuration des systèmes, déployer des applications et orchestrer des infrastructures de manière centralisée. Il permet d’automatiser des tâches répétitives sur un ensemble de machines, tout en garantissant une configuration cohérente et reproductible.
Son fonctionnement repose sur un modèle sans agent (agentless) : aucune installation n’est nécessaire sur les machines cibles, car la communication s’effectue via des protocoles standards comme SSH pour les systèmes Linux ou WinRM pour Windows.
1. Installation
Depuis une machine Linux / Debian, mettre à jour le système :
Installer Ansible.
Ubuntu propose maintenant Ansible via le dépôt officiel ou via apt directement.
Pour la version stable on utilisera alors la version apt
Vérifier l’installation
Tu devrais voir la version installée, par exemple ansible 2.14.
2. Configuration de base pour test
Créer le fichier d’inventaire :
Exemple simple de contenu pour tester sur la machine locale :
Créatuib d'yb ytikisateur de liaision dédié (Ansible)
On créer un utilisateur nommée ansible qui servira d'utilisateur de liaison entre le serveur Ansible et les machines cibles.
Nous mettrons cet utilisateur dans la configuration /etc/ansible/host pour ansible_user=ansible
Connexion uniquement avec clé (Recommandée pour Ansible)
Se rendre dans le fichier sudoers :
Ajoute en dessous de Root en bas de page :
Tester la connexion :
Si tout est OK, tu verras pong.
3. Configuration finale
Se rendre dans le fichier suivant :
Voici la configuration nécessaire pour notre infrastructure :
À chaque fois qu'on mettra en place une nouvelle VM Serveur, il faudra l'ajouter dans ce fichier de configuration afin que l'inventaire soit à jour par la suite dans le GLPI.
[local]
127.0.0.1 ansible_connection=local
[serveurs]
bdd ansible_host=10.10.120.7 ansible_user=bdd
reverse-proxy ansible_host=10.10.120.80 ansible_user=user
reverse-proxy-sec ansible_host=10.10.120.90 ansible_user=user
web ansible_host=10.10.120.11 ansible_user=user
dns-autorite ansible_host=10.10.120.8 ansible_user=user
dns-autorite-sec ansible_host=10.10.120.18 ansible_user=user
dns-resolver ansible_host=10.10.120.9 ansible_user=user
dns-resolver-sec ansible_host=10.10.120.19 ansible_user=user
ca-autorite ansible_host=10.10.120.12 ansible_user=certificat
docker ansible_host=10.10.120.15 ansible_user=user
ansible ansible_host=10.10.120.14 ansible_user=ansible
[all_linux:children]
serveurs
4. Generation de la clé publique
Il n'est pas possible d'utiliser une connexion SSH via mot de passe car le serveur Ansible ne le connaît pas, il faut donc mettre en place une authentification via clé publique, nous allons donc générer une clé publique pour le serveur Ansible :
On ne met pas en place de PassPhrase, car le serveur ne la connaîtra pas non plus, cela ça reviendrais au même que le mot de passe !
5. Copie de la clé publique sur les VM Serveurs de l'infrastructure
On va copier la clé publique sur toutes les VM que l'on veut répertorier dans l'inventaire à l'aide d'une commande (scp auto) :
On y précisera le MÊME utilisateur utilisé dans ansible_user dans la configuration de l'inventaire via sudo nano /etc/ansible/hosts
Faire cela pour toutes les VM présentes dans la configuration uniquement pour la première fois, une par une, même s'il y en a un grand nombre.
6. Test de connexion
Une fois les étapes précédentes correctement mises en place, nous ferons un test via la commande suivante :
Le résultat retourné doit être le suivant (ceci est un exemple):
[WARNING]: Host 'dns-resolver-sec' is using the discovered Python interpreter at '/usr/bin/python3.13', but future installation of another Python interpreter could cause a different interpreter to be discovered. See https://docs.ansible.com/ansible-core/2.19/reference_appendices/interpreter_discovery.html for more information.
dns-resolver-sec | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3.13"
},
"changed": false,
"ping": "pong"
}