Ansible¶
Ansible est un outil permettant d'automatiser la configuration et le déploiement de systèmes.
Points clés¶
- Ansible utilise le format YAML pour décrire les tâches à exécuter.
- Les scripts de déploiement sont déclaratifs et idempotents (rejouer un script ne provoque pas d'effet de bord).
- Ansible fonctionne sans agent (connexion SSH ou appel d'API sur les systèmes administrés).
- Les tâches sont organisées en playbooks, eux-mêmes structurés en rôles réutilisables.
- Ansible peut gérer des infrastructures complexes via des inventaires statiques ou dynamiques.
- Ansible doit être exécuté sur un hôte Linux (c.f. docs.ansible.com - Can Ansible run on Windows?) mais est capable de gérer des machines windows avec Ansible à l'aide de modules dédiés.
Pré-requis¶
- Une machine ou VM sous Linux (c.f. docs.ansible.com - Can Ansible run on Windows?)
- Configurer les variables d'environnement pour utilisation d'un proxy sortant
Installation¶
- docs.ansible.com - Installation Guide documente l'installation.
- ansible/install.sh traite le cas Ubuntu avec l'ajout du dépôt "ppa:ansible/ansible" et l'installation du package :
curl -sS https://mborne.github.io/outils/ansible/install.sh | bash
- ansible/create-venv.sh exploite
python3 -m venv ~/ansible-venvpour isoler l'installation :
# Pour créer ~/ansible-venv :
curl -sS https://mborne.github.io/outils/ansible/create-venv.sh | bash
# Pour l'utiliser :
source ~/ansible-venv/bin/activate
- Pour tester l'installation :
ansible --version
ansible -l localhost -m ping localhost
Les principaux exécutables¶
Ansible se décompose en plusieurs programmes :
| Exécutable | Fonction |
|---|---|
| ansible | Exécuter une tâche sur les machines d'un inventaire |
| ansible-playbook | Exécuter une liste de tâche (playbook) sur les machines d'un inventaire |
| ansible-galaxy | Création et téléchargement de playbook partagés via galaxy.ansible.com ou via git |
| ansible-vault | Gestion de fichiers chiffrés pour le stockage des secrets |
Quelques exemples¶
Les exemples du cours DevOps avec des VM :
- github.com - mborne/vagrantbox qui permet de configurer des VM de DEV avec Ansible.
- github.com - mborne/geostack-deploy - ansible qui illustre le déploiement de GeoStack sur les VM vagrantbox
- github.com - mborne/k3s-deploy qui permet de déployer un cluster Kubernetes avec K3S sur les VM vagrantbox.
Quelques exemples complémentaires :
- github.com - geerlingguy/ansible-for-devops pour les exemples associés au livre Ansible for DevOps de Jeff Geerling qui met à disposition de nombreuses ressources pour ansible (c.f. https://ansible.jeffgeerling.com/).
- github.com - osm-fr/ansible-scripts qui illustre l'utilisation de Ansible pour la gestion des serveurs openstreetmap.fr
Ressources¶
- docs.ansible.com - Basic Concepts
- docs.ansible.com - Getting started with Ansible
- docs.ansible.com - How to build your inventory
- docs.ansible.com - Best Practices
- Ansible Galaxy qui présente les dépôt de playbook partagés.
- blog.stephane-robert.info - Maîtriser Ansible pour un cours complet en Français.