Annoncée il y a un peu plus d’un an cette version 2.3.0 est le premier pas vers
la sortie de la version 3.0 qui est en fait une réécriture complète de l’outil
de création d’environnements de développement virtuels d’HashiCorp.
Cette version 2.3.0 est donc le premier pas et ne bouleverse pas encore trop
les habitudes. En effet, cette version fournit encore la version écrite en ruby
mais elle est accompagnée de la première version alpha de vagrant-go, comme
son nom l’indique, elle est écrite en Go.
Sur le site de la documentation de
Vagrant-Go ↗ on peut lire
ceci : “Cette version de Vagrant-Go reste compatible avec les plugins Vagrant
écrit en Ruby ainsi que les fichiers Vagrantfile”. Cool. “Cependant, il y a
quelques changements importants dans le fonctionnement de Vagrant-go qui le
rendent NON interchangeable avec Vagrant (Ruby)”. Ah mince.
Je vous propose de tester tout de suite cette version de Vagrant-Go, mais
avant vérifions que le plugin vagrant-libvirt s’installe correctement.
Installation du plugin vagrant-libvirt avec Vagrant-Go
Je vais tester l’installation du plugin vagrant-libvirt avec Vagrant-Go sur
ma configuration devops 2022. Pour
rappel, cette configuration est montée sur une VM hyper-V elle-même créé
avec la version Windows de Vagrant. Elle est basée sur une Ubuntu 22.04.
Info Importante : Vagrant-Go ne fonctionne pas pour le moment sous Windows !
Si on souhaite désactiver le message d’erreur il suffit d’exporter la variable
VAGRANT_SUPPRESS_GO_EXPERIMENTAL_WARNING avec la valeur true :
Revenons à notre plugin vagrant-libvirt. Je viens de me rendre compte qu’il
s’agit d’une nouvelle version de celui-ci. Sortie un jour après cette
implémentation de Vagrant en Go. Un petit tour dans le changelog ne
montre pas que c’est en relation avec la sortie de cette version, mais apporte
des corrections au plugin.
Maintenant que le plugin est installé vérifions que cela fonctionne.
Test de Vagrant 2.3.0 avec le plugin libvirt
Pour faire mes tests, j’ai repris le Vagrantfile de la IAC du HomeLab sur lequel
j’ai lancé l’ancienne version (en ruby) pour vérifier qu’elle fonctionne encore
puis la version en Go.
Dont le contenu est :
Allez on lance le bon vieux vagrant up :
Au bout de quelques minutes le provisionnement se lance avec le lancement des
playbooks Ansible. Pas de problème donc les deux VM sont disponibles.
Allez on détruit et on teste avec la version en GO :
Ah un problème lors de la création de la VM devbox2. D’ailleurs étrange il
re-télécharge la box. Comme indiqué, il ne faut pas mélanger les deux versions.
Je détruis le répertoire .vagrant et je relance :
Idem, alors il s’agit bien d’un problème ! Un peu capricieux
avec les Vagrantfile contenant plusieurs machines ? Ou, mais oui j’ai installé
une nouvelle version du plugin vagrant-libvirt.
J’essaie de désinstaller le plugin pour remettre l’ancienne version et Bim :
Aie !!! Bon les grands moyens : on efface le répertoire .vagrant.d dans la
home directory.
Pas mieux. En testant avec des Vagrantfile ne contenant pas plusieurs VM je
n’ai pas rencontré de soucis.
Conclusion
Je note une certaine latence sur la version en GO qui met plus de temps à
démarrer les box. Vous l’avez vu au-dessus, ce n’est pas du
production-ready. Cette version n’est là pour remonter les problèmes à
HashiCorp pour les corriger avant la prochaine version qui sera la 2.4.0. Il y
aura certainement des versions 2.3.x corrigeant certains de ces problèmes.
**Ne mélangez pas les deux versions non plus !!! **
La suite
On est encore loin de la sortie de la version 3.0 de Vagrant . Cette
version 2.3.0 est le premier pas et sera suivi d’une version 2.4.0 ou
cette fois, c’est la version Go qui sera fourni en standard.
Un point positif HashiCorp souhaite conserver la compatibilité avec
l’existant. Mais pour rappel lors de l’annonce du lancement de l’écriture de
Vagrant 3.0, il était annoncé que cette version introduirait de nouvelles
méthodes de configuration, mais conserverait une compatibilité avec les
fichiers Vagrantfiles. Ces nouvelles méthodes de configuration seront
probablement à base de HCL, le langage maison.
La nouvelle architecture permettra d’exécuter Vagrant sur un hôte distant.
Ainsi, il sera possible de partager un environnement Vagrant entre plusieurs
membres d’une équipe. Il est indiqué plein de choses comme une configuration
centralisée (vagrant-cloud ?), une API et plein d’autres choses.
Hâte de voir tout cela, mais j’ai du mal à saisir : Pourquoi apporter toutes
ces fonctionnalités dans Vagrant alors que Terraform les apporte déjà ?