Quand on parle d’automatisation, on fait souvent référence à Ansible. Pourtant, il peut parfois sembler complexe à comprendre au premier abord, et il n’est pas toujours évident de visualiser concrètement son utilité dans un environnement informatique.
À travers ce premier lab de découverte, je vous propose de découvrir Ansible par la pratique, en réalisant pas à pas plusieurs actions simples et concrètes sur des serveurs Linux.
Vous apprendrez notamment à :
- configurer une connexion SSH par clés ;
- créer un inventaire Ansible ;
- tester la connectivité des machines ;
- exécuter vos premiers playbooks ;
- automatiser les mises à jour Debian ;
- déployer Apache ;
- installer et configurer MariaDB.
L’objectif de ce lab est de vous montrer qu’Ansible n’est pas réservé aux grandes infrastructures, mais qu’il peut rapidement devenir un outil simple, puissant et très utile au quotidien.
Consignes du Lab
Objectif
Découvrir les bases d’Ansible en administrant plusieurs serveurs Debian depuis un serveur de contrôle.
Environnement disponible
Vous disposez de :
- 1 serveur de contrôle avec Ansible a installé
- 2 clients Debian
ansible-client1ansible-client2
Informations de connexion
- Utilisateur :
root - Mot de passe :
formation
Ce que vous allez réaliser
- Générer une clé SSH
- Configurer l’accès aux clients
- Installer Ansible et créer un inventaire YAML
- Tester la connexion avec
ansible ping - Créer votre premier playbook
- Mettre à jour les serveurs Debian
- Installer Apache sur un client
- Installer MariaDB sur un autre client
Conseils
- Relancez les playbooks plusieurs fois pour observer l’idempotence.
- Prenez le temps de lire les retours des commandes.
- Vérifiez la syntaxe YAML (indentation importante).
Ressources
- Ansible : installation, configuration et utilisation avec Windows et Linux
- Ansible : organiser vos hôtes dans un fichier d’inventaire au format YAML
- Ansible documentation
🧪 Lab · membre · 30 min
🧪 Lancer le labVoir la solutionMasquer la solution
1. Créer un jeu de cle de privee / publique pour la connexion ssh, ne pas mettre de mot de passe (passphrase)
ssh-keygen -t ed25519 -C "ansible@control-serveur"
2. Localiser les clients à l’aide de la commande ping et noter les IP, les clients sont ansible ansible-client1 et ansible-client2
ping ansible-client1
ping ansible-client2
3. Se connecter aux clients et ajouter la cle publique, le compte a utiliser est root et mot de passe formation.
# Pour le client1
ssh root@ansible-client1
# Dans le dossier .ssh ouvrir le fichier authorized_keys
nano .ssh/authorized_keys
# Coller ensuite le cle publique et repeter l'operation
4. Installer Ansible et créer le fichier d inventaire au format yaml, pour des raisons de facilite, on va créer un dossier
apt update
apt install ansible
mkdir ansible
cd ansible
# Créer le fichier inventaire.yaml
nano inventaire.yaml
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
5. Test client avec ansible ping
ansible all -i /root/ansible/inventaire.yaml -m ping -vv
6. Transformer ansible ping en playbook
# Créer le fichier playbook_ping.yaml dans le dossier ansible
nano playbook_ping.yaml
# playbook_ping.yaml
---
- name: Vérification de la connectivité des hôtes
hosts: all
tasks:
- name: Envoyer un ping Ansible aux machines
ping:
# Executer le playbook
ansible-playbook /root/ansible/playbook_ping.yaml -i /root/ansible/inventaire.yaml -v
7. Créer un playbook pour installer les maj sur les serveurs, Debian, afin de simuler un environnement plus large, on édite en premier le fichier d’inventaire pour créer un group Debian
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
children:
debian:
hosts:
ansible-client1:
ansible-client2:
# playbook_debian_update.yaml
---
- name: Mise à jour complète des serveurs Debian
hosts: debian
become: yes
tasks:
- name: Actualiser le cache apt et mettre à jour tous les paquets
apt:
update_cache: yes
upgrade: dist
# Executer le playbook
ansible-playbook /root/ansible/playbook_debian_update.yaml -i /root/ansible/inventaire.yaml -v
8. Installation Apache sur client 1 avec Ansible en utilisant un playbook puis MariaDB sur le client 2
On commence par éditer le fichier d’inventaire pour créer deux nouveaux groupes
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
children:
debian:
hosts:
ansible-client1:
ansible-client2:
webservers:
hosts:
ansible-client1:
databases:
hosts:
ansible-client2:
Création du playbook pour installer Apache :
#playbook_apache_install.yaml
---
- name: Installer Apache
hosts: webservers
become: yes
tasks:
- name: Installer Apache2
apt:
name: apache2
state: present
update_cache: yes
- name: Démarrer Apache
service:
name: apache2
state: started
enabled: yes
Création du playbook MariaDB pour l’installation et la configuration
#playbook_mariadb_install.yaml
---
- name: Installer et configurer MariaDB
hosts: databases
become: yes
vars:
mysql_root_password: SuperRoot123!
app_db: appdb
app_user: appuser
app_password: AppPass123!
tasks:
- name: Installer MariaDB
apt:
name:
- mariadb-server
- python3-pymysql
state: present
update_cache: yes
- name: Démarrer MariaDB
service:
name: mariadb
state: started
enabled: yes
- name: Définir mot de passe root
community.mysql.mysql_user:
name: root
host: localhost
password: "{{ mysql_root_password }}"
login_unix_socket: /run/mysqld/mysqld.sock
check_implicit_admin: true
priv: "*.*:ALL,GRANT"
- name: Supprimer base test
community.mysql.mysql_db:
name: test
state: absent
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Créer base applicative
community.mysql.mysql_db:
name: "{{ app_db }}"
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Créer utilisateur applicatif
community.mysql.mysql_user:
name: "{{ app_user }}"
password: "{{ app_password }}"
priv: "{{ app_db }}.*:ALL"
host: "%"
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
Exécuter les playbooks :
ansible-playbook /root/ansible/playbook_apache_install.yaml -i /root/ansible/inventaire.yaml -v
ansible-playbook /root/ansible/playbook_mariadb_install.yaml -i /root/ansible/inventaire.yaml -v