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.
Installation¶
- docs.ansible.com - Installation Guide
- ansible/install.sh traite le cas Ubuntu avec l'ajout du dépôt "ppa:ansible/ansible" l'installation du package :
curl -sS https://mborne.github.io/outils/ansible/install.sh | bash
- gist.github.com - mborne/ansible-venv-md - Ansible dans un environnement virtuel Python
- ansible/create-venv.sh exploite
python3 -m venv ~/ansible-venv
pour isoler l'installation :
curl -sS https://mborne.github.io/outils/ansible/create-venv.sh | bash
Utilisation¶
# Cas venv : activer l'utilisation de ansible
source ~/ansible-venv/bin/activate
# Tester le fonctionnement
ansible --version
ansible -l localhost -m ping localhost
# Cas venv : arrêter d'utiliser ansible
deactivate
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.