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.
1 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.
1.1 Configuration spécifique pour VirtualBox
Pour VirtualBox, j’ai ajouté deux fichiers de configuration supplémentaires à la racine:
1.1.0.1 ansible.cfg
|
|
1.1.0.2 hosts
|
|
2 Provisionning
2.1 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:
|
|