6 - Ansible

Installation & premier pas

Pour installer Ansible sur le serveur Debian, rien de plus simple :

sudo apt install ansible

Une fois Ansible installé, nous allons créer un fichier ~/ansible/inventaire

mkdir ~/ansible
vi ansible/inventaire
[conteneur]
10.0.3.11 name="c1"
10.0.3.12 name="c2"
[conteneur:vars]
ansible_python_interpreter="/usr/bin/python3"
ansible_user=user

Sauvegarder et quitter. (La dernière ligne n'est nécessaire que si le nom d'utilisateur sur les conteneurs est différent du nom d'utilisateur sur votre serveur Debian. Il existe aussi une variable « ansible_ssh_pass »)

👉 L'inventaire par défaut d'Ansible se trouve à l'adresse : /etc/ansible/hosts et contient des exemples de configuration.

Échangeons quelques 🏓

ansible -i ansible/inventaire conteneur -m ping

⚠️ Le module ping d'Ansible n'a rien à voir avec ICMP…

Vous devez obtenir une réponse qui ressemble à :

10.0.3.12 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
10.0.3.11 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Maintenant, le traditionnel « Hello World »

ansible -i ansible/inventaire conteneur -m shell -a "/bin/echo Hello World from {{name}}"

Ici la variable name provient de l'inventaire, la notation respect Jinja2

Profitons en pour mettre à jour les deux conteneurs

ansible -i ansible/inventaire conteneur -b -m apt -a "update_cache=yes upgrade=full"

Et installons un paquet pour l'exemple

ansible -i ansible/inventaire conteneur -b -m apt -a "name=htop state=present"

Notez dans ces deux derniers exemples la présence du switch -b (become) qui par défaut vous fera devenir root via la commande sudo. Ces deux paramètres sont personnalisable, le nom d'utilisateur et la commande permettant d'éléver ces droits. Exemple : ansible --become_method su --become-user bolos

Documentation

Dans les deux exemples précédents, nous avons utilisé les modules ping, shell et apt. Ansible est livré par défaut avec de nombreux modules que vous pouvez lister avec la commande ansible-doc -l :

printf "Il y a %s modules disponibles\n" $(ansible-doc -l | wc -l)

Pour chaque opération que vous envisagez d'appliquer à un système, il existe sans doute déjà un module prêt à l'emploi. Exemple :

ansible-doc -l | grep -E '^(apt|dnf|pacman) '

Et rien ne vous empêche de développer vos propres modules :p

Pour chaque module vous pouvez appeler ansible-doc pour obtenir des détails sur son fonctionnement

ansible-doc apt

Ansible dispose également d'une documentation complète en ligne que vous trouverez à cette adresse :

Pour la version fournie par Debian Bookworm, la 2.10 :

Vous y trouverez notamment une liste de nombreux modules existants :