Vagrant
Vagrant est un logiciel anciennement libre et open-source pour la création et la configuration des environnements de développement virtuels. Il peut être considéré comme un wrapper autour de logiciels de virtualisation comme VirtualBox.
vagrant up
Développé par | Mitchell Hashimoto et John Bender |
---|---|
Première version | |
Dernière version | 2.4.1 ()[1] |
Dépôt | github.com/hashicorp/vagrant |
État du projet | En développement actif |
Écrit en | Ruby |
Système d'exploitation | Microsoft Windows, macOS et Linux |
Langues | Anglais |
Type | Gestion de configuration |
Politique de distribution | Gratuit |
Licence | Licence MIT et Business Source License 1.1 (d) |
Site web | www.vagrantup.com |
Depuis la version 1.1, Vagrant n'impose plus VirtualBox, mais fonctionne également avec d'autres logiciels de virtualisation tels que VMware, et prend en charge les environnements de serveurs comme Amazon EC2, à condition d'utiliser une « box » prévue pour le système de virtualisation choisi. Bien qu'écrit en Ruby, il est utilisable dans des projets écrits dans d'autres langages de programmation tels que PHP, Python, Java, C# et JavaScript.
Depuis la version 1.6[2],[3], Vagrant prend nativement en charge les conteneurs Docker à l'exécution, au lieu d'un système d'exploitation entièrement virtualisé. Cela permet de réduire la charge en ressources puisque Docker utilise des conteneurs Linux légers.
Fonctions et concepts
modifierVagrant s'utilise via une interface en ligne de commande. Voici une liste des commandes et des concepts importants de Vagrant.
Initialisation du projet
modifierPour initialiser un dossier, vous devez sélectionner le dossier et exécuter la commande vagrant init
. Un fichier nommé « Vagrantfile » est généré et placé dans le dossier des exemples et des explications. En ajoutant vagrant init --minimal
une version minimale des Vagrantfiles est générée sans exemple, ni explication.
La commande vagrant init
prend deux paramètres optionnels vagrant init [box-name] [box-url]
. En spécifiant un "box-name" on génère un Vagrantfile depuis un modèle approprié ("Box"). L'option "box-url" est l'URL indiquée où la "Box" peut être téléchargée. Ces informations peuvent également être configurées dans le Vagrantfile.
Ce fichier peut ensuite être modifié avec n'importe quel éditeur de texte.
Les Box
modifierLes Box sont des machines virtuelles préconfigurées (templates). Cela devrait accélérer le processus de développement et la distribution de logiciels. Chaque box qui a été utilisée par l'utilisateur est stockée sur l'ordinateur et n'a donc pas besoin d'être re-téléchargée depuis Internet. Les boîtes peuvent être ajoutées via les commandes vagrant box add [box-name]
et vagrant box add [box-url]
. On supprime une boîte au moyen de la commande vagrant box remove [box-name]
. Un "box-name" est construit, par convention, comme suit : "développeur / Box", par exemple "hashicorp/precise32". Vagrant Cloud sert de plateforme d'échange pour trouver des boîtes et y déposer ses propres boîtes.
Démarrage rapide
modifierExemple de démarrage rapide:
# on recupere un vagrantfile definissant la box vagrant init "ubuntu/xenial64" # on crée la machine avec virtualbox vagrant up --provider=virtualbox # on se connecte à la machine en ssh vagrant ssh
# on detruit la box vagrant destroy
Configuration
modifierToute la configuration se fait dans un Vagrantfile. La syntaxe est similaire à Ruby.
Un exemple de syntaxe:
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise32" end
Provisioning
modifierAvec Vagrant, il est possible d'utiliser les outils de Provisioning suivants : File, Shell, Ansible, CFEngine, Chef Solo, Chef Client, Docker, Puppet Apply, Puppet Agent et Salt.
Exemple de syntaxe:
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise32" config.vm.provision "shell", path: "script.sh" end
Ceci résulte du script shell "script.sh".
Une variété d'approvisionneur peut être exécutée dans un fichier. Exemple de syntaxe utilisant plusieurs approvisionneurs :
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise32" config.vm.provision "shell", path: "script.sh" config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig" config.vm.provision "ansible" do |ansible| ansible.playbook = "playbook.yml" end end
Déploiement
modifierDepuis la version 1.7 de le déploiement en utilisant la commande vagrant push
par Heroku, SFTP (de) et FTP, en écrivant vos propres scripts de ligne de commande est possible.
Exemple de syntaxe d'une poussée de FTP:
config.push.define "ftp" do |push| push.host = "ftp.test.com" push.username = "utilisateur1" push.password = "mot de passe" push.secure = false push.destination = "/" push.dir = "/" end
Cette section montre un exemple utilisant le protocole FTP sur le serveur avec l'adresse "ftp.test.com" avec l'utilisateur "user1" et le mot de passe "password1". push.secure
indique si le protocole SFTP doit être utilisé, par défaut il est a false
. push.destination
contient le chemin de destination (sur le serveur), où les fichiers doivent être envoyés, push.dir
contient le chemin local pour les fichiers à télécharger. Tous les chemins sont liés au Vagrantfile. Des fichiers et des dossiers peuvent être exclus avec exclude
ou inclus avec include
.
Démarrer une session
modifierPour démarrer la machine virtuelle, on utilise la commande vagrant up
. Puis une session SSH peut être démarrée avec vagrant ssh
.
Fin d'une session
modifierLa machine virtuelle peut être terminée de différentes manières. La machine peut-être intégralement supprimée avec toutes ses dépendances via la commandevagrant destroy
. On peut également l’arrêter via la commande vagrant halt
ou la suspendre avec vagrant suspend
. Il est aussi possible de la redémarrer avec vagrant reload
.
Divers
modifierAvec Vagrant, plusieurs machines virtuelles peuvent fonctionner simultanément, leurs statuts peuvent être consultés avec la commande vagrant global-status
.
Versions
modifierDepuis la version 1.1, d'autres applications de virtualisation que VirtualBox sont pris en charge : VMware Player et les environnements de serveurs tels qu'Amazon EC2.
La version 1.5 apporte un dossier de synchronisation avec rsync et SMB, ainsi que le support d'Hyper-V.
Avec la version 1.6, Docker est également supporté nativement à l'exécution, ce qui permet de réduire la charge, puisque Docker utilise des mécanismes de conteneurisation intégré à Linux plutôt que de virtualiser le système d'exploitation dans son entièreté.
Avec la version 1.7 publiée le , le déploiement est facilité en utilisant la commande vagrant push
à travers Heroku, SFTP et FTP, en écrivant ses propres scripts, ainsi que la commande interne "Atlas".
La version 1.8 est sortie le . Cette version utilise maintenant autant que possible les "linked images", des images disques qui ne doivent plus être dupliquées, mais peuvent être spécifiées comme des références. En outre, des sauvegardes d'états (snapshots) peuvent maintenant être créés.
Divers
modifierVagrant dispose de plugins[4] facilitant l'utilisation de certains composants, par exemple l'installation de docker-compose peut se faire directement depuis le vagrantfile.
Pour accompagner le développement du projet Mitchell Hashimoto et Armon Dadgar fondent en 2012 Hashicorp, Inc.
Un plugin appelé vagrant-libvirt
permet le support de Libvirt dans Vagrant.
Avec la version 1.5. sort également "Vagrant cloud". Ce service en ligne permet à une équipe de travailler simultanément sur une machine virtuelle.
Licence
modifierVagrant a initialement été rendu disponible sous une licence MIT. Le , Hashicorp annonce sur son site un changement de licence, passant les produits de l'entreprise à une licence non opensource, la Business Source Licence 1.1 (BUSL-1.1)[5].
Liens externes
modifierNotes et références
modifier- « Release 2.4.1 », (consulté le )
- (en) « vagrant/CHANGELOG.md - 1.6.0 (May 6, 2014) », sur gthub.com
- (en) « Vagrant 1.6 ajoute le support pour les conteneurs Docker », sur infoq.com
- (en) « A list of plugins for Vagrant », sur vagrant-lists.github.io (consulté le ).
- (en) « HashiCorp adopts the Business Source License for future releases of its products »
- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Vagrant (software) » (voir la liste des auteurs).
- (de) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en allemand intitulé « Vagrant (Software) » (voir la liste des auteurs).