wiki/HowtoVagrant.md

105 lines
2.6 KiB
Markdown
Raw Normal View History

2018-03-02 15:24:17 +01:00
---
title: Howto Vagrant
---
2016-12-29 11:25:39 +01:00
2018-03-02 15:24:17 +01:00
* Documentation : <https://www.vagrantup.com/docs/>
2016-12-29 11:25:39 +01:00
2018-03-02 15:24:17 +01:00
[Vagrant](https://www.vagrantup.com) est un logiciel qui permet de configurer des environnements de développement légers, portables et reproductibles.
2016-12-29 11:25:39 +01:00
2018-03-02 15:24:17 +01:00
À travers son fichier de configuration nommé **Vagrantfile**, il permet d'orchestrer la mise en place d'environnement virtuel à base de VM ou de conteneur.
2016-12-29 11:25:39 +01:00
## Installation
2018-03-02 15:24:17 +01:00
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>
2016-12-29 11:25:39 +01:00
2017-01-03 11:20:35 +01:00
## Providers
2016-12-29 11:25:39 +01:00
2018-03-02 15:24:17 +01:00
Vagrant permet de lancer et configurer des environnements basés sur VirtualBox, Libvirt, VMware, Docker, Amazon EC2 et plusieurs autres.
2016-12-29 11:25:39 +01:00
## Commandes de base
1. Lancer l'environnement:
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
vagrant up
~~~
2. Provisionner l'environnement:
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
vagrant provision
~~~
3. Stopper l'exécution de l'environnement:
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
vagrant halt
~~~
4. Supprimer l'environnement:
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
vagrant destroy
~~~
5. Accéder à la machine virtuelle par SSH
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
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:
2017-01-03 11:20:35 +01:00
~~~{.ruby}
2016-12-29 11:25:39 +01:00
# -*- 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
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
#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
2017-01-03 11:20:35 +01:00
~~~