Installation et structure
Ansible dispose de plusieurs méthodes d’installation :
- Via le package manager de la distribution GNU/Linux
- Via le package manager Python (pip, poetry, …)
Ansible recommande d’installer les outils via le package manager Python afin de disposer des dernières versions. C’est aussi la méthode que j’utilise et que l’on va détailler ici.
Une fois l’installation d’Ansible faite, on s’attardera un peu sur comment se créer un espace de travail pour Ansible et comment faire quelques configurations aidantes.
Installation
Section titled “Installation”Pour détailler l’installation, je vais détailler tout le processus via le package manager pip.
En premier lieu, assurez-vous d’avoir installé sur votre système les modules Python nécessaire :
sudo apt install python3-pip python3-venvsudo dnf install python3-pip python3-virtualenvUne fois ces paquets installés sur la machine, créez un virtualenv Python qui vous servira pour Ansible et activez le :
python3 -m venv --copies ~/ansible_venvsource ~/ansible_venv/bin/activateÀ cette étape, vous êtes prêt à installer Ansible via le package manager de Python.
Il ne vous reste donc qu’à lancer l’installation :
pip install ansibleVous pouvez vérifier la version d’Ansible que vous avez installé avec la commande suivante :
$ ansible --versionansible [core 2.17.5]...Structure
Section titled “Structure”Ansbile utilise une structure de dossiers et fichiers pour la gestion des inventaires et des modules.
La structure recommandé par Ansible, à minima pour les parties inventaires, playbooks et rôles et la suivante :
Directoryansible_workspace/
Directoryinventories/
Directoryhost_vars/
- …
Directorygroup_vars/
- …
- inventory.yml
Directoryplaybooks/
- …
Directoryroles/
- …
On retrouve donc les dossiers et fichiers suivants :
inventories: Dossier qui contiendra vos différents inventaires au besoinhost_vars: Dossier contenant les variables propres à chaque ciblegroup_vars: Dossier contenant les variables propres à chaque groupeinventory.yml: Fichier d’inventaireplaybooks: Dossier contenant vos différents playbooksroles: Dossier contenant vos différents rôles
Configuration
Section titled “Configuration”Il est possible de configurer Ansible pour :
- l’adapter à votre environnement
- optimiser les exécutions sur des parcs importants
- récupérer automatiquement des secrets
- utiliser des callbacks personnalisés
- …
Pour voir l’ensemble des configurations possibles, vous pouvez génerer la configuration de référence avec la commande suivante :
ansible-config init --disabled > ansible.cfgVous aurez ainsi l’ensemble des options de configurations d’Ansible dans le fichier ansible.cfg sans surcharger les
configurations par défaut du fait de l’apposition de l’option --disabled.
Personnellement, j’utilise assez peu de configurations mais qui restent assez pratiques :
[defaults]; Force la path de recherche des rôles;roles_path = ./roles; Force la path de recherche des playbooks;playbook_dir = ./playbooks; Définit le fichier d’inventaire par défautinventory = ./inventories/inventory.yml
; Définit le fichiere contenant le mot de passe pour les vault ansible; !!! Attention, si vous gérez votre code ansible avec GIT à ne pas inclure ce fichier dans votre dépotvault_password_file=.vault_password
; Allow world readable tmpfile to permit become to unprivileged user in task; Peut être dangereux à l’usage, à utiliser en connaissance de cause et si vous n’avez pas d’autre solutions;allow_world_readable_tmpfiles=true
; Active le task_debugger. En cas d’erreur sur une tâche, Ansible activera le debugger pour permettre l’analyse; de l’environnement d’exécution afin de comprendre plus en détail l’erreur.;enable_task_debugger = true
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Performance tuning;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Tasks profiling;callback_whitelist = profile_tasks; Augmentation du nombre de fork pour accélérer le déploiement sur un inventaire largeforks=10
[ssh_connection]; Activation du multiplexage de session SSH. La session reste connectée et est réutilisée au besoin.; Permet d’éviter le dialogue d’ouverture de session surtout dans le cas de copie de fichiers.ssh_args = -o ControlMaster=auto -o ControlPersist=2mIl y a beaucoup d’autres options de configuration, mais pour ma part je suis resté « simple ». Je vous laisserai fouille dans le fichier de configuration de référence pour trouver d’autre options qui pourraient être intéressantes pour vous à configurer.