MES TUTOS
VEILLE
Chargement de la veille...
DEVOPS

Ansible : Automatiser sans agent (Infrastructure as Code)

Les scripts Bash, c'est bien pour un serveur. Mais quand vous devez mettre à jour 50 serveurs, cela devient un cauchemar. Ansible permet de décrire l'état désiré de votre infrastructure (ex: "Je veux que Nginx soit installé") et il se débrouille pour le faire. Le tout, sans installer aucun agent sur les serveurs cibles.

1. Pourquoi Ansible est génial ?


2. Installation (Sur votre poste de contrôle)

Ansible ne s'installe que sur votre ordinateur (ou un serveur de rebond), jamais sur les cibles.

sudo apt update
sudo apt install ansible -y

Le prérequis vital : Clés SSH

Ansible doit pouvoir se connecter aux serveurs cibles sans mot de passe. Propagez votre clé SSH :

ssh-copy-id user@192.168.1.50
ssh-copy-id user@192.168.1.51

3. L'Inventaire (Inventory)

C'est l'annuaire de vos serveurs. Créez un fichier hosts.ini :

[webservers]
192.168.1.50
192.168.1.51

[dbservers]
192.168.1.60

[all:vars]
ansible_user=user # L'utilisateur SSH à utiliser partout

Testons la connexion avec le module "ping" :

ansible all -i hosts.ini -m ping

Si vous voyez du vert (SUCCESS), vous êtes prêt.


4. Votre premier Playbook

Un Playbook est une liste de tâches. Créons install_nginx.yml pour installer un serveur web.

---
- name: Installation et configuration de Nginx
  hosts: webservers  # On cible le groupe défini dans l'inventaire
  become: true       # On passe en root (sudo)

  tasks:
    - name: Mettre à jour le cache APT
      apt:
        update_cache: yes

    - name: Installer Nginx
      apt:
        name: nginx
        state: present

    - name: S'assurer que Nginx est démarré
      service:
        name: nginx
        state: started
        enabled: yes # Démarrage automatique au boot

    - name: Copier ma page d'accueil perso
      copy:
        src: index.html
        dest: /var/www/html/index.html
        mode: '0644'
Traduction : "Connecte-toi aux serveurs Web, deviens Root, mets à jour apt, installe Nginx s'il n'est pas là, démarre-le, et copie mon fichier index.html."

5. Lancement

Exécutez le playbook :

ansible-playbook -i hosts.ini install_nginx.yml

Vous verrez quelque chose comme :

PLAY [Installation de Nginx] ***************************************************
TASK [Gathering Facts] ... ok
TASK [Installer Nginx] ... changed
TASK [Démarrer Nginx] ... changed
PLAY RECAP *********************************************************************
192.168.1.50 : ok=4    changed=2    unreachable=0    failed=0

Si vous relancez la commande, vous verrez changed=0. C'est ça, la puissance de l'idempotence : Ansible ne fait rien s'il n'y a rien à faire.

Conclusion

Ceci n'est que la surface. Ansible peut gérer des templates (Jinja2), des rôles complexes, et même configurer des switchs réseaux Cisco. C'est l'outil qui fait passer un SysAdmin du statut d'artisan à celui d'industriel.

← Retour à la bibliothèque