Ansible

Ansible est un outil open-source d'automatisation permettant la gestion de la configuration, le dĂ©ploiement d’applications et l'orchestration d'infrastructure. Il est conçu pour ĂȘtre simple Ă  utiliser, efficace et sans agent.

Ansible

Introduction Ă  Ansible

Ansible est un outil open-source d'automatisation permettant la gestion de la configuration, le dĂ©ploiement d’applications et l'orchestration d'infrastructure. Il est conçu pour ĂȘtre simple Ă  utiliser, efficace et sans agent.

Pourquoi utiliser Ansible ?

  • SimplicitĂ© : BasĂ© sur YAML et ne nĂ©cessite aucun agent sur les machines gĂ©rĂ©es.
  • Idempotence : Permet d'assurer qu'une tĂąche ne soit exĂ©cutĂ©e que si nĂ©cessaire.
  • ExtensibilitĂ© : Supporte un grand nombre de modules pour diffĂ©rents usages.
  • SĂ©curisĂ© : Utilise SSH sans nĂ©cessiter d'agents supplĂ©mentaires.
  • Compatible : Fonctionne sur de nombreux systĂšmes (Linux, macOS, Windows via WSL).

Installation de Ansible

Sur Linux (Debian/Ubuntu)

sudo apt update && sudo apt install ansible -y

Sur macOS

brew install ansible

Sur Windows (via WSL ou Python)

pip install ansible

VĂ©rifier l’installation

ansible --version

Concepts fondamentaux

1. Inventaire

Un fichier qui définit les hÎtes gérés par Ansible.

Exemple d’inventaire (hosts.ini) :

[webservers] 192.168.1.10 192.168.1.11 [dbservers] db.example.com

2. Modules

Les modules sont des scripts réutilisables exécutés sur les hÎtes pour effectuer diverses actions.

Exemple : Utiliser le module ping

ansible all -i hosts.ini -m ping

3. Playbooks

Un playbook est un fichier YAML qui décrit une série de tùches à exécuter sur des hÎtes.

Exemple de playbook (install_nginx.yml) :

- name: Installer et démarrer Nginx hosts: webservers become: yes tasks: - name: Installer Nginx apt: name: nginx state: present - name: Démarrer Nginx service: name: nginx state: started

Exécuter le playbook :

ansible-playbook -i hosts.ini install_nginx.yml

4. Handlers

Un handler est une tĂąche qui s’exĂ©cute uniquement lorsqu’elle est notifiĂ©e par une autre tĂąche.

Exemple avec un handler :

- name: Installer et configurer Apache hosts: webservers become: yes tasks: - name: Installer Apache apt: name: apache2 state: present - name: Modifier la configuration template: src: apache.conf.j2 dest: /etc/apache2/apache2.conf notify: Redémarrer Apache handlers: - name: Redémarrer Apache service: name: apache2 state: restarted

5. Variables et Templates

Les variables permettent de rendre les playbooks plus dynamiques.

Exemple de variables dans vars.yml :

app_port: 8080

Exemple d’utilisation dans un playbook :

- name: Déployer une application hosts: webservers become: yes vars_files: - vars.yml tasks: - name: Copier la configuration template: src: app.conf.j2 dest: /etc/app/config.conf

Exemple de template (app.conf.j2) :

server { listen {{ app_port }}; }

6. RĂŽles Ansible

Les rĂŽles permettent d’organiser les playbooks en structures modulaires rĂ©utilisables.

Créer un rÎle :

ansible-galaxy init mon_role

Structure d’un rîle :

mon_role/
 ├── tasks/main.yml      # DĂ©finition des tĂąches
 ├── handlers/main.yml   # Handlers associĂ©s
 ├── templates/          # Fichiers templates
 ├── vars/main.yml       # Variables spĂ©cifiques
 ├── defaults/main.yml   # Valeurs par dĂ©faut
 ├── meta/main.yml       # MĂ©tadonnĂ©es du rĂŽle

Utiliser un rĂŽle dans un playbook :

- name: Déployer une application hosts: webservers roles: - mon_role

Gestion avancée avec Ansible

1. Gestion des secrets avec Ansible Vault

Permet de chiffrer des fichiers sensibles (mots de passe, clés API, etc.).

Créer un fichier chiffré :

ansible-vault encrypt secrets.yml

Déchiffrer un fichier :

ansible-vault decrypt secrets.yml

Utiliser un fichier chiffré dans un playbook :

vars_files: - secrets.yml

2. Exécution parallÚle et stratégies d'exécution

Par défaut, Ansible exécute les tùches en parallÚle sur plusieurs hÎtes.

Limiter l’exĂ©cution Ă  un hĂŽte Ă  la fois :

ansible-playbook -i hosts.ini deploy.yml --forks=1

3. Ansible et CI/CD

Ansible peut ĂȘtre intĂ©grĂ© dans des pipelines CI/CD avec GitHub Actions, GitLab CI/CD ou Jenkins.

Exemple de pipeline avec GitHub Actions :

name: Deploy with Ansible on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install Ansible run: sudo apt update && sudo apt install ansible -y - name: Run Ansible playbook run: ansible-playbook -i hosts.ini deploy.yml

En résumé

Ansible est un outil puissant et flexible pour automatiser la gestion d’infrastructure. GrĂące Ă  son approche dĂ©clarative et sa simplicitĂ© d’utilisation, il est devenu un standard dans le monde de l’administration systĂšme et du DevOps. Que ce soit pour le dĂ©ploiement d’applications, la gestion de configurations ou l’orchestration d’infrastructures, Ansible offre une solution robuste et Ă©volutive.

📘 Quiz : Teste tes connaissances !

đŸ–„ïž Terminal Trainer : Pratique tes commandes !