Ansible pour les provisionner tous !
Si vous provisionnez vos VM VirtualBox avec Vagrant, vous avez sans doute eu l’idée d’automatiser le provisionning des machines virtuelles. Dans mon cas une VM GNU/Linux basée sur Debian 9.
Pour cela, soit vous faite tout manuellement et après les mises à jour deviennent fastidieuses, soit vous appliquez un script shell au démarrage de vagrant, soit vous utilisez Ansible.

Ansible est un outil opensource permettant d’automatiser le provisionning et la mise à jour des environnements à distance (via SSH). L’avantage par rapport à des outils tels que Puppet, est qu’il ne nécessite pas l’installation d’agent.
Je vais essayer de vous montrer comment mettre en place le provisionning via Ansible pour VirtualBox.
Configuration de Vagrant
Dans le fichier Vagrantfile, on active le provisionning via Ansible:
|
|
Cette configuration fait référence à un fichier « playbook » site.yml. C’est la configuration qui sera appliqué lors du provisionning . Que ça soit à la création ou pour les mises à jour.
Voici un exemple de contenu:
|
|
Ce fichier est la racine de notre configuration Ansible. On y référence les rôles appliqués et les fichiers d’ environnement. Voici un exemple de rôle:
|
|
Les variables d’environnement permettent de variabiliser certains champs de vos rôles. On peut trouver par exemple les versions de certains outils déployés
|
|
Il y a une quantité impressionnante de modules Ansible que l’on peut utiliser. Que ça soit pour lancer des commandes shell ou lancer des services. Contrairement à la création d’un script shell qui pourrait faire les mêmes actions à la création, on peut facilement gérer la mise à jour de la VM car Ansible détecte les modifications lors de son exécution.
Configuration spécifique pour VirtualBox
Pour VirtualBox, j’ai ajouté deux fichiers de configuration supplémentaires à la racine:
ansible.cfg
|
|
hosts
|
|
Provisionning
A la création
le provisionning peut se faire au lancement de vagrant via la commande:
|
|
Pour faire une mise à jour
Directement dans la box, vous pouvez lancer les commandes suivantes :
|
|
Puis, vous pouvez lancer les commandes suivantes dans la box:
|
|