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 rôles ansible principalement écrits pour expérimenter des déploiements sur Raspberry PI et sur une VM perso bon marché (https://www.quadtreeworld.net/) :
- mborne/ansible-docker-ce permet de déployer docker (community edition) en suivant les recommandations de docker-bench-for-security.
- mborne/ansible-traefik permet de déployer traefik en tant que service systemd (pour éviter le partage de réseau dans docker et faciliter le filtrage par IP)
- mborne/ansible-ufw permet de configurer Uncomplicated Firewall (UFW) avec ansible.
- mborne/ansible-nfs-server permet de déployer un serveur NFS (pour expérimenter le stockage ReadWriteMany (RWX) dans Kubernetes)
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 - 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.