Qu'est-ce qu'Ansible ?
Ansible est une plateforme d'automatisation informatique open-source créée par Michael DeHaan en 2012 et maintenant sponsorisée par Red Hat. Elle est conçue pour résoudre la complexité de la gestion des infrastructures informatiques modernes en offrant une approche radicalement simple de l'automatisation. Contrairement à de nombreux outils d'automatisation, Ansible est sans agent — il utilise SSH pour communiquer avec les systèmes distants sans nécessiter d'installation de logiciel sur les machines cibles.
La plateforme gère la gestion de la configuration, le déploiement d'applications, l'approvisionnement en cloud, l'exécution de tâches ad hoc, l'automatisation des réseaux et l'orchestration multi-nœuds. Ce qui distingue Ansible, c'est son utilisation de playbooks basés sur YAML conçus pour être lisibles à la fois par les humains et les machines, rendant l'automatisation accessible à la fois aux développeurs et aux administrateurs système.
Commencer
L'installation d'Ansible est simple sur différentes plateformes. La dernière version 2.20.3 nécessite Python 3.12 ou supérieur.
Installation via pip
pip install ansible-coreUbuntu/Debian
sudo apt update
sudo apt install ansibleCentOS/RHEL/Fedora
sudo dnf install ansiblemacOS
brew install ansibleAprès l'installation, vérifiez la configuration :
ansible --version
ansible-playbook --versionUtilisation et exemples pratiques
Ansible fonctionne à travers un fichier d'inventaire qui définit votre infrastructure et des playbooks qui décrivent les configurations souhaitées.
Configuration de base de l'inventaire
Créez un fichier d'inventaire hosts.ini :
[webservers]
web1.example.com
web2.example.com
[databases]
db1.example.com
db2.example.com
[all:vars]
ansible_user=admin
ansible_ssh_private_key_file=~/.ssh/id_rsaCommandes ad hoc simples
Testez la connectivité à tous les hôtes :
ansible all -i hosts.ini -m pingInstallez un paquet sur les serveurs web :
ansible webservers -i hosts.ini -m apt -a "name=nginx state=present" --becomeExemple de playbook
Créez un playbook webserver.yml pour configurer nginx :
---
- name: Configure web servers
hosts: webservers
become: yes
tasks:
- name: Install nginx
apt:
name: nginx
state: present
update_cache: yes
- name: Start and enable nginx
systemd:
name: nginx
state: started
enabled: yes
- name: Copy custom index.html
copy:
content: "Welcome to {{ inventory_hostname }}
"
dest: /var/www/html/index.html
owner: www-data
group: www-data
mode: '0644'
- name: Ensure nginx is running
service:
name: nginx
state: startedExécutez le playbook :
ansible-playbook -i hosts.ini webserver.ymlUtilisation des rôles pour des déploiements complexes
Pour des déploiements plus importants, organisez le code en rôles :
ansible-galaxy init roles/common
ansible-galaxy init roles/webserver
ansible-galaxy init roles/database




