18
0
Fork 0
wiki/HowtoVagrant.md

2.6 KiB

title
Howto Vagrant

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

Debian Stretch propose Vagrant 1.9.1, pour l'installer (ainsi que le plugin libvirt) :

apt install vagrant vagrant-libvirt

Des paquets Debian officiels (maintenu par Hashicorp) sont aussi disponibles dans des versions plus récentes mais sans répository : https://www.vagrantup.com/downloads.html

Providers

Vagrant permet de lancer et configurer des environnements basés sur VirtualBox, Libvirt, VMware, Docker, Amazon EC2 et plusieurs autres.

Commandes de base

  1. Lancer l'environnement:
vagrant up
  1. Provisionner l'environnement:
vagrant provision
  1. Stopper l'exécution de l'environnement:
vagrant halt
  1. Supprimer l'environnement:
vagrant destroy
  1. 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:

# -*- 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