Introduction à Vagrant


Technique

Vagrant est un logiciel libre et open source permettant de créer et de configurer des machines virtuelles.

Le but de cette virtualisation est de fournir un environnement de développement proche de votre environnement cible sans pour autant avoir à modifier la configuration de votre poste de travail. Ainsi, si votre serveur de production fonctionne sous Linux alors que votre machine est sous Mac OS ou Windows, vous pourrez développer et tester votre application dans des conditions similaires. De plus, cette création de conteneur permet de partager un environnement pré-configuré avec tous les membres de votre équipe et ainsi éviter les pertes de temps à la mise en place de votre environnement local.

 

Comment cela fonctionne ?

Pour fonctionner, Vagrant requiert deux éléments. Le premier élément est un fichier de configuration nommé “Vagrantfile” dans lequel réside toute la configuration de la machine virtuelle. Le second élément est une box/VM c’est à dire un système d’exploitation pré-installé, configuré et packagé dans un format spécifique.

 

Installation

Vagrant nécessite l’installation de  Virtualbox. Pour ce faire, téléchargez la version correspondant à votre système d’exploitation depuis le site officiel. 

Attention, Vagrant fonctionne seulement avec les versions 4.0.x, 4.1.x, 4.2.x, 4.3.x, and 5.0.x de Virtualbox.

L’installation de Vagrant est extrêmement simple. L’application est disponible à cette adresse. L’installeur configurera automatiquement votre système.

 

Création d’une box

L’un des premiers avantages de Vagrant est qu’il n’y a pas d’installation de système d’exploitation. En effet, la communauté met à disposition des packages pré-installés de système d’exploitation. Ces packages ne sont rien d’autre que des box compressées.

Voici un exemple simple de création de box :

Nous allons utiliser dans cet exemple le package “ubuntu/trusty64 Official Ubuntu Server 14.04 LTS (Trusty Tahr) builds”.

#Ouvrir un invité de commandes et créer un répertoire pour votre box
>mkdir box-ubuntu
>cd box-ubuntu

#Cette commande va initialiser et générer le fichier "Vagrantfile" permettant de configurer la box.
>vagrant init ubuntu/trusty64

#Cette commande va initialiser et démarrer la box
>vagrant up --provider virtualbox

#Nous pouvons maintenant nous connecter en ssh
>vagrant ssh

#Une fois connectés en SSH nous pouvons maintenant installer les applications dont nous avons besoin pour travailler.
>sudo aptitude install apache2

Si vous souhaitez créer d’autres box avec un OS diffèrent ou une distribution différente, nous vous invitons à aller sur cette page, vous découvrirez d’autres box Vagrant mises à disposition par la communauté.

Pour les plus courageux qui souhaiteraient créer eux-mêmes leur box, nous vous conseillons la lecture de cet article.

 

Pour aller plus loin, voici comment obtenir la liste des principales commandes :

>vagrant list-commands

Below is a listing of all available Vagrant commands and a brief description of what they do.box manages boxes: installation, removal, etc.connect connect to a remotely shared Vagrant environment destroy stops and deletes all traces of the vagrant machine

docker-logs     outputs the logs from the Docker container
docker-run      run a one-off command in the context of a container
global-status   outputs status Vagrant environments for this user
halt            stops the vagrant machine
help            shows the help for a subcommand
init            initializes a new Vagrant environment by creating a Vagrantfile
list-commands   outputs all available Vagrant subcommands, even non-primary ones
login           log in to HashiCorp's Atlas
package         packages a running vagrant environment into a box
plugin          manages plugins: install, uninstall, update, etc.
provision       provisions the vagrant machine
push            deploys code in this environment to a configured destination
rdp             connects to machine via RDP
reload          restarts vagrant machine, loads new Vagrantfile configuration
resume          resume a suspended vagrant machine
rsync           syncs rsync synced folders to remote machine
rsync-auto      syncs rsync synced folders automatically when files change
share           share your Vagrant environment with anyone in the world
ssh             connects to machine via SSH
ssh-config      outputs OpenSSH valid configuration to connect to the machine
status          outputs status of the vagrant machine
suspend         suspends the machine
up              starts and provisions the vagrant environment
version         prints current and latest Vagrant version

https://docs.vagrantup.com/v2/cli/index.html

 

Configuration d’une box

Le fichier “Vagrantfile” contient toutes les informations utiles à la VM, CPU, mémoire allouée, transfert de port, dossiers partagés, attribution d’IP…. L’un des avantages majeur de ce fichier de configuration est qu’il est versionable.

Voici les principaux paramètres que l’on peut retrouver dans le fichier Vagrantfile

#Pour définir la mémoire allouée de la VM
 vb.memory = "1024"

#Il est possible de créer un dossier de partage. L’un des principaux avantages est de pouvoir partager son code entre la machine parent et la VM.
 config.vm.synced_folder "/home/julien/web", "/var/www", nfs: true

#Une des autres fonctionnalités est de pouvoir forwarder les ports.
 config.vm.network "forwarded_port", guest: 80, host: 8080
#Il vous suffira simplement alors d'accéder à cette https://localhost:8080

#Nous pouvons également définir les applications à installer à l’initialisation de la box.
config.vm.provision "shell", inline: <<-SHELL
  sudo apt-get update
  sudo apt-get install -y apache2
SHELL

 
Cette configuration pouvant s’avérer fastidieuse, nous vous recommandons d’utiliser l’application web PuPHPet. Elle vous permettra de créer et de pré-configurer une box Vagrant très facilement. 

 

Conclusion

Vagrant est un outil destiné principalement aux développeurs mais sa prise en main reste extrêmement simple. Il peut être considéré comme une sur-couche permettant de gérer des machines virtuelles avec VirtualBox. Grâce à de simples commandes, il permet aux développeurs de créer, de configurer et de partager de nouveaux environnements de travail. L’utilisation de Vagrant prendra tout son sens dès lors que le nombre de développeurs intervenant sur un projet augmentera.

 

 

 

 

Laisser un commentaire