Ansible est un outil open-source d’automatisation informatique conçu pour gérer la configuration, le déploiement et l’orchestration des infrastructures. Il est maintenu par Red Hat et est populaire pour sa simplicité, sa flexibilité, et son modèle sans agent (agentless).
Principales caractéristiques d’Ansible
- Sans agent : Ansible utilise le protocole SSH pour interagir avec les machines distantes, ce qui signifie qu’aucun logiciel n’a besoin d’être installé sur ces dernières.
- Langage simple (YAML) : Les tâches sont définies dans des fichiers YAML appelés « playbooks ». Ce langage est lisible et facile à écrire.
- Automatisation idempotente : Ansible applique des changements uniquement lorsque cela est nécessaire, garantissant que l’état désiré est atteint sans répéter inutilement les actions.
- Évolutif : Ansible peut gérer des infrastructures de quelques serveurs à des milliers de machines.
- Communauté active : De nombreux modules et rôles (collections de configurations préécrites) sont disponibles pour simplifier les tâches courantes.
Cas d’utilisation d’Ansible
- Gestion de la configuration : Installer des paquets, modifier des fichiers de configuration, configurer des services.
- Déploiement d’applications : Déployer du code, mettre à jour des applications, ou configurer des environnements spécifiques.
- Orchestration : Coordonner plusieurs machines ou services pour des tâches complexes (ex. : gestion de clusters).
- Gestion du cloud : Automatiser les ressources sur AWS, Azure, GCP, etc.
- Sécurité et conformité : Appliquer des configurations de sécurité cohérentes sur plusieurs serveurs.
Installation d’Ansible
Sur Linux (exemple pour Ubuntu/Debian) :
sudo apt update
sudo apt install ansible -y
Sur CentOS/Red Hat :
sudo yum install epel-release -y
sudo yum install ansible -y
Via Python (pip) :
pip install ansible
Vérification de l’installation :
ansible --version
Configuration de base d’Ansible
1. Inventaire
Un inventaire est un fichier qui liste les machines à gérer.
- Exemple de fichier
/etc/ansible/hosts
:
[webservers]
www.site1.com
www.site2.com
[dbservers]
db1.site1.com
2. Commande Ad-hoc
Tester la connectivité avec les serveurs :
ansible all -m ping
all
: S’applique à tous les serveurs de l’inventaire.-m ping
: Utilise le module « ping ».
3. Playbook Ansible
Un playbook est un fichier YAML qui décrit les tâches à exécuter.
- Exemple de playbook :
deploy.yml
- name: Installer un serveur web
hosts: webservers
become: true # Exécuter avec des privilèges sudo
tasks:
- name: Installer Apache
apt:
name: apache2
state: present
- name: Démarrer Apache
service:
name: apache2
state: started
Exécution du playbook :
ansible-playbook deploy.yml
Modules courants d’Ansible
- apt/yum : Gestionnaire de paquets (Ubuntu/Debian ou CentOS/Red Hat).
- copy : Copier des fichiers vers une machine distante.
- file : Gérer les permissions, propriétaires ou créer des répertoires.
- service : Gérer les services (démarrer, arrêter, redémarrer).
- shell/command : Exécuter des commandes shell.
- user : Ajouter ou modifier des utilisateurs.
Avantages d’Ansible
- Facile à apprendre et à utiliser.
- Documentation riche et communauté active.
- Convient aux petites et grandes infrastructures.
- Intégration avec des outils tiers comme Jenkins, Terraform, Kubernetes, etc.
Ressources utiles
Besoin d’un exemple spécifique ou d’une clarification ? 😊