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 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.
sudo apt update && sudo apt install ansible -y
brew install ansible
pip install ansible
ansible --version
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
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
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
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
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 }}; }
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
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
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
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
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.