Infra - Ansible
Ansible
Ansible est un outil d’automatisation IT orienté configuration management, déploiement et orchestration.
tu décris l’état souhaité de ton infra… et Ansible s’occupe de le rendre réel.
Cas d’usage concrets
- Installer/configurer des serveurs (nginx, users, firewall…)
- Maintenir la cohérence entre environnements (dev/staging/prod)
Alternative à Puppet / Chef.
3. Orchestration multi-serveurs
Exemple :
-
- Provisionner VM
- Installer DB
- Déployer backend
- Configurer load balancer
Tout dans un seul workflow.
4. Infrastructure as Code (IaC)
- Décrire ton infra en YAML
- Versionner dans Git
- Reproductibilité totale
Concepts clés
- Inventory → liste des serveurs
- Playbooks → fichiers YAML (le cœur)
- Modules → actions (apt, service, copy…)
- Roles → structure modulaire propre
Mise en place & Get Started
Prérequis :
- Avoir un poste Linux
- Avoir Docker et Docker Compose d'installé
Installation Ansible
Pour installer Ansible sur linux il convient d'exécuter la commande d'installation suivante :
sudo apt install ansible python3-pip -y
Et pour avoir le lint d'aide :
pip install ansible-lint
Créer des “faux serveurs” avec Docker
Pour ce faire nous allons écrire un docker-compose contenant 4 services tirant les images ubuntu :
version: "3"
services:
marseille:
image: ubuntu:22.04
container_name: marseille
command: sleep infinity
nantes:
image: ubuntu:22.04
container_name: nantes
command: sleep infinity
paris:
image: ubuntu:22.04
container_name: paris
command: sleep infinity
vps:
image: ubuntu:22.04
container_name: vps
command: sleep infinity
Puis créer les conteneurs :
docker compose up -d
Préparer les containers (IMPORTANT) -> Ansible a besoin de Python minimum.
docker exec -it marseille apt update
docker exec -it marseille apt install -y python3
docker exec -it nantes apt update && docker exec -it nantes apt install -y python3
docker exec -it paris apt update && docker exec -it paris apt install -y python3
docker exec -it vps apt update && docker exec -it vps apt install -y python3
Créer un inventaire
Créer le fichier suivant inventory.yml :
all:
children:
main:
hosts:
marseille:
backup:
hosts:
nantes:
paris:
brain:
hosts:
vps:
vars:
ansible_connection: docker
ansible_python_interpreter: /usr/bin/python3
Ici on utilise la connexion Docker (pas SSH).
Test de base de l'inventaire : ansible all -i inventory.yml -m ping
Créer un playbook
Par exemple nous créer le fichier helloworl.yml et y mettre la configuration suivante :
- hosts: all
become: true
tasks:
- name: Install curl
apt:
name: curl
state: present
update_cache: yes
- name: Create test file
file:
path: /tmp/ansible_test
state: touch
Puis exéctuer le playbook sur les "serveurs" : ansible-playbook -i inventory.yml helloworl.yml
Pour vérifier le bon déroulement du playbook nous allons voir si le fichier ansible_test a bien été créé dans les conteneurs :
docker exec -it marseille ls /tmp
Une fois un playbook exécuté, les conteneurs vont garder leurs états et la configuration. Pour nettoyer les serveurs et repartir de zéro, il faut exécuter la commande suivante : docker compose down -v