Vagrant

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Vagrant
Logo

Vagrant démarrage d'une machine virtuelle en utilisantvagrant up
Vagrant démarrage d'une machine virtuelle en utilisantvagrant up

Développeur Mitchell Hashimoto et John Bender
Première version Voir et modifier les données sur Wikidata
Dernière version 1.7.2 ()
1.8.7 ()
1.9.0 ()[1]
1.9.2 ()
1.9.3 ()
1.9.4 ()
1.9.7 ()Voir et modifier les données sur Wikidata
État du projet En développement actif
Écrit en RubyVoir et modifier les données sur Wikidata
Environnement Microsoft Windows, macOS, GNU/Linux et POSIXVoir et modifier les données sur Wikidata
Langues AnglaisVoir et modifier les données sur Wikidata
Type AdaptateurVoir et modifier les données sur Wikidata
Politique de distribution Gratuit
Licence Licence MIT[2]Voir et modifier les données sur Wikidata
Site web www.vagrantup.comVoir et modifier les données sur Wikidata

Vagrant est un logiciel libre et open-source pour la création et la configuration des environnements de développement virtuel. Il peut être considéré comme un wrapper autour de logiciels de virtualisation comme VirtualBox.

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[3],[4], Vagrant fournit un support natif des conteneurs Docker à l'exécution, au lieu d'un système d'exploitation entièrement virtualisé. Cela permet de réduire les frais généraux puisque Docker utilise des conteneurs Linux légers.

Fonctions et concepts[modifier | modifier le code]

Vagrant s'utilise via une interface en ligne de commande. Voici une liste des commandes et des concepts importants de Vagrant.

Initialisation du projet[modifier | modifier le code]

Pour initialiser un dossier, vous devez sélectionner le dossier et exécuter la commande vagrant init puis 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 généré sans exemples et des explications.

La commande vagrant init  prend deux paramètres d'initialisation vagrant init [box-name] [box-url], en spécifiant un "box-name" peut être généré par le Vagrantfile directement avec un modèle approprié ("Box") et par les indications "box-url" est l'URL  indiquée sur la boîte ce est et peut être téléchargé. Cette information peut également être configuré dans Vagrantfile.

Ce fichier peut maintenant être modifié avec n'importe quel éditeur de texte.

Les Boxs[modifier | modifier le code]

Les Boxs 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 ne doit donc pas être re-téléchargée sur Internet. Les boîtes peuvent être ajoutées via la commande vagrant box add [box-name] ou  vagrant box add [box-url]. Pour les supprimer c'est la commande vagrant box remove [box-name]. Un "box-name" est, 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[modifier | modifier le code]

Exemple de démarrage rapide

# on recupere un vagrantfile definissant la box
vagrant init "ubuntu/xenial64"
# on creer la machine avec virtualbox
vagrant up --provider=virtualbox
# on se connecte à la machine en ssh
vagrant ssh
# on detruit la box
vagrant destroy

Configuration[modifier | modifier le code]

Toute 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[modifier | modifier le code]

Avec 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 d'approvisionneur en parallèle plusieurs :

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[modifier | modifier le code]

Depuis la version 1.7 de décembre 2014 le déploiement en utilisant la commande vagrant push par Heroku, SFTP et FTP, en écrivant vos propres scripts de ligne de commande „Atlas“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 econtient 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 à Vagrantfile . Des fichiers et des dossiers peuvent être exclus de l'aide exclude ou inclus avec include .

Démarrer une session[modifier | modifier le code]

Pour 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[modifier | modifier le code]

La machine virtuelle peut être terminée de différente manière. La machine peut-être détruit totalement avec toute ces dépendances via la commandevagrant destroy. On peut également l’arrêter via la commande  vagrant halt ou suspendre la machine avec  vagrant suspend. Il est aussi possible de redémarrer la machine avec vagrant reload.

Divers[modifier | modifier le code]

Avec Vagrant, plusieurs machines virtuelles peuvent fonctionner simultanément, leurs statuts peut être demandé avec la commande vagrant global-status.

Versions[modifier | modifier le code]

Depuis la version 1.1, d'autres applications de virtualisation sont pris en charge VMware Player et les environnements de serveurs tels qu'Amazon EC2.

la version 1.5 apporte, dossier de synchronisation avec rsync et SMB ainsi que le soutien pour Hyper-V.

Avec la version 1.6 Docker est également supporté nativement à l'exécution, qui est conçu pour de réduire la surcharge comme Docker fonctionne avec LXC.

Avec la Version 1.7 publiée le 9 décembre 2014, le déploiement est facilité en utilisant la commande vagrant push à travers Heroku, SFTP et FTP, en écrivant vos propres scripts, ainsi que la interne "Atlas" .

La Version 1.8 est sortie le 21 décembre 2015. 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 sauvegarde d'étâts (snapshots) peuvent maintenant être créés.

Divers[modifier | modifier le code]

Pour accompagner le développement du projet Mitchell Hashimoto et Armon Dadgar fondent en 2012 Hashicorp, Inc.

Il y a un plugin appelé vagrant-libvirt, qui permet le support de Libvirt dans Vagrant.

Avec la version 1.5. sort également "Vagrant cloud". Ce nuage permet à une équipe de travailler simultanément sur une machine virtuelle

Liens externes[modifier | modifier le code]

Notes et références[modifier | modifier le code]