**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.** # HowtoVagrant Vagrant est un logiciel qui permet de configurer des environnements de développement légers, portables et reproductibles. À travers son fichier de configuration nommé Vagrantfile, il permet d'orchestrer la mise en place d'environnement virtuel à base de VM ou de conteneur. ## Installation Des paquets Debian officiels sont disponibles, mais l'équipe de Hashicorp maintient également un paquet plus récent (sans répository) : ## Providers Vagrant permet de lancer et configurer des environnements basés sur VirtualBox, VMware, Docker, Amazon EC2 et plusieurs autres. ## Commandes de base 1. Lancer l'environnement: ~~~ vagrant up ~~~ 2. Provisionner l'environnement: ~~~ vagrant provision ~~~ 3. Stopper l'exécution de l'environnement: ~~~ vagrant halt ~~~ 4. Supprimer l'environnement: ~~~ vagrant destroy ~~~ 5. Accéder à la machine virtuelle par SSH ~~~ vagrant ssh ~~~ ## Vagrantfile Le Vagrantfile un fichier en Ruby qui décrit le type de machine à démarrer, leurs spécifications et leur configuration initiale (provision). Ce fichier est unique à un projet et doit être situé à la racine de ce dernier. Exemple: ~~~{.ruby} # -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| #Image de base de la machine virtuelle config.vm.box = "debian/jessie64" #Désactivation de la synchronisation des fichiers à la racine du projet. (activé par défaut) config.vm.synced_folder "./", "/vagrant", disabled: true #Spécification du provider et caractéristiques des VM. config.vm.provider :virtualbox do |v| v.memory = 1024 v.cpus = 2 v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] v.customize ["modifyvm", :id, "--ioapic", "on"] end #Définition de la machine virtuelle qui sera lancée. config.vm.define :default do |default| default.vm.hostname = "default" default.vm.network :private_network, ip: "192.168.33.33" default.vm.provision :ansible do |ansible| ansible.limit = "default" ansible.playbook = "provisioning/vagrant.yml" ansible.raw_arguments = ["-b"] end end #Configuration permettant de distribuer l'image dans le Vagrant Atlas config.push.define "atlas" do |push| push.app = "evolix/evolinux" push.vcs = false end end ~~~