Aller au contenu

Introduction à Ansible

Ansible est un outil d’automatisation open-source qui permet de gérer la configuration, le déploiement d’applications et l’orchestration d’infrastructures. Développé par Red Hat, il est conçu pour être simple, agentless (sans agent), et basé sur une syntaxe YAML claire et lisible.

Concepts fondamentaux

Inventaire

L’inventaire est un fichier (INI ou YAML) qui liste les hôtes que vous souhaitez gérer avec Ansible. Il peut inclure des groupes pour organiser les machines par rôle (par exemple, serveurs web, bases de données).

Exemple d’inventaire INI :

[webservers]
server1 ansible_host=192.168.1.10 ansible_user=admin
server2 ansible_host=192.168.1.11 ansible_user=admin

[dbservers]
db1 ansible_host=192.168.1.20 ansible_user=admin

Exemple d’inventaire YAML :

all:
  children:
    webservers:
      hosts:
        server1:
          ansible_host: 192.168.1.10
          ansible_user: admin
        server2:
          ansible_host: 192.168.1.11
          ansible_user: admin
    dbservers:
      hosts:
        db1:
          ansible_host: 192.168.1.20
          ansible_user: admin

Modules

Les modules sont des unités de travail dans Ansible, chacun conçu pour une tâche spécifique (par exemple, gérer des paquets, fichiers, ou services). Ansible propose plus de 1000 modules intégrés, couvrant une vaste gamme de cas d’utilisation.

Exemple avec le module apt pour installer Apache sur Debian/Ubuntu :

- name: Installer Apache
  apt:
    name: apache2
    state: present
    update_cache: yes
  become: yes

Playbooks

Les playbooks sont des fichiers YAML qui orchestrent une série de tâches à exécuter sur les hôtes. Ils définissent l’ordre des opérations et les conditions d’exécution.

Exemple de playbook pour configurer un serveur web :

---
- name: Configurer un serveur web
  hosts: webservers
  become: yes
  tasks:
    - name: Installer Apache
      apt:
        name: apache2
        state: present
        update_cache: yes
    - name: Démarrer Apache
      service:
        name: apache2
        state: started
        enabled: yes

Tâches et Handlers

Les tâches sont les unités d’exécution dans un playbook. Les handlers sont des tâches spéciales déclenchées par des notifications, souvent utilisées pour redémarrer des services après un changement.

Exemple avec un handler :

- name: Configurer Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Copier fichier de configuration
      copy:
        src: files/httpd.conf
        dest: /etc/apache2/sites-available/000-default.conf
      notify: Restart Apache
  handlers:
    - name: Restart Apache
      service:
        name: apache2
        state: restarted

Pourquoi Ansible est puissant ?

  • Agentless : Pas besoin d’installer de logiciel sur les hôtes cibles.
  • Idempotence : Les tâches ne modifient l’état que si nécessaire, évitant les erreurs.
  • Flexibilité : Compatible avec Linux, Windows, réseaux, et clouds publics.
  • Communauté active : Une vaste bibliothèque de modules et roles via Ansible Galaxy.

Cas d’utilisation

  • Configuration système : Standardisez les configurations sur des centaines de serveurs.
  • Déploiement continu : Intégrez Ansible dans des pipelines CI/CD.
  • Gestion du cloud : Provisionnez et configurez des instances sur AWS, Azure, ou GCP.
  • Sécurité : Appliquez des correctifs ou configurez des règles de pare-feu.

Avantages par rapport à d’autres outils

Comparé à Puppet ou Chef, Ansible est : - Plus simple à apprendre grâce à sa syntaxe YAML. - Sans agent, réduisant les prérequis sur les hôtes. - Plus rapide à configurer pour des projets de petite à moyenne échelle.