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.