Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Tutoriel Vagrant

Par Germain MONGUILLON Publié le 27/12/2017 à 16:32:37 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Article traduit de l’anglais avec l’accord de George Sava d’après son article. Lien : https://www.supinfo.com/articles/single/4949-vagrant-tutorial

Depuis ces dernières années la virtualisation et la standardisation des machines virtuelles sont devenues des sujets controversés, et sont peuplé par différents systèmes qui veulent faire de ce sujet une réalité accessible à tout le monde. L’un de ces systèmes modulaire est Vagrant. Dans les lignes suivantes nous allons parler de ce qu’est Vagrant, comme cela fonctionne et comment installer et configurer ce système.

Qu’est-ce que Vagrant ?

Si vous recherchez sur Google le terme Vagrant, vous allez avoir approximativement la définition suivante :

Vagrant est défini comme une personne sans maison fixe ou travail stable qui se déplace d’endroit en endroit. Dans un sens, cette description convient très bien au logiciel Vagrant.

Le logiciel Vagrant est un système pour configurer, distribuer et virtualiser le travail, le développement, et les environnements de production. Cela permet, à travers une variété d’applications externes, une configuration simple, la fourniture, et la distribution de machines virtuelles pour standardiser et rendre facile la préparation du développement d’un application ou environnement de production, ou pour gagner accès aux outils qui marchent seulement dans certains systèmes d’exploitation.

Un exemple concret serait d’isoler les environnements de développement, et d’automatiser les compilations et de créer des applications à travers différents environnements (ex Windows pour les applications Windows Phone, Mac OS X pour les applications IOS, etc). Un autre exemple serait d’expérimenter sans contaminer la machine locale, ou d’isoler les expérimentations entre elles.

Ce processus est décrit en un seul fichier qui peut être copié d’un endroit à un autre, en créant l’environnement désiré dans n’importe quelle machine hôte (physique ou virtuelle). L’environnement créé peut être changé de n’importe quelle manière, et quand il est créé à nouveau, il retournera dans l’état originel défini par le fichier.

Vagrant n’est pas une personne, mais il peut voyager d’endroit à endroit sans maison fixe ou travail stable. C’est une solution pour homogénéiser l’environnement de travail entre membres d’une équipe de développement, parallèlement à la publication d’un logiciel, ou toute autre action requérant un point de départ prédéfini. Vagrant offre ce point de départ d’une manière minimaliste et sécurisé.

Comment marche Vagrant ?

Vagrant est un système de gestion et de configuration pour machines virtuelles créé par divers système de virtualisation (VirtualBox, VMWare, Docker, etc.).

Vagrant utilise un nombre prédéfini de machines virtuelles pour plusieurs systèmes d’exploitation (Ex : Windows, Ubuntu, Mac OS X, Red Hat, etc.) et différentes versions de ces systèmes d’exploitation. Vagrant va télécharger ces machines virtuelles prédéfinies, et créer leurs copies au besoin. Ces machines sont typiquement minimalistes, avec un minimum d’outils et de configuration conceptualisé pour convenir à un grand nombre de restrictions. A partir de maintenant, la machine virtuelle copiée sera approvisionnée. L’approvisionnement de la machine est accompli de différentes manières, décrites plus bas, le but étant de préparer une machine au travail, soit en installant le logiciel nécessaire, en commençant par certains services, ou en liant les éléments de la machine virtuelle à la machine dans la machine hôte (qui fait fonctionner la machine virtuelle) comme les réseaux ou les fichiers et dossiers.

Dès que la machine virtuelle est créée, elle peut être démarrée. A ce moment-là, approvisionner c’est faire marcher. Quand l’approvisionnement est complet, la machine peut être accédée par soit SSH ou par d’autres méthodes (Ex : VirtualBox, VMWare, etc., la machine peut être accessible depuis l’interface de service).

L’information nécessaire à la création et à l’approvisionnement pour une telle machine est stockée dans un fichier appelé Vagrantfile. Ce fichier peut simplement être transféré dans une autre machine (physique ou virtuelle) depuis lequel le processus peut être repris sans aucune modification, requérant seulement l’utilitaire Vagrant et le fournisseur (VirtualBox, VMWare, etc.).

Installation

Avant de débuter l’installation de Vagrant, nous devons être sûr que Vagrant a un système de machines virtuelles qu’il peut utiliser. Vagrant supporte un grand nombre de ces systèmes comme : VirtualBox, VMWare, Docker, Hyper-V etc. La connexion pour ces systèmes est faite via des plugins appelés Fournisseurs. Vagrant est accompagné des supports nécessaires pour VirtualBox, et le support pour d’autres plateformes (plateformes qui normalement requièrent des licences payantes) est généralement offert pour un certain montant.

Donc, nous allons utiliser VirtualBox pour travailler avec Vagrant, et avant d’installer/utiliser Vagrant, nous avons besoin d’être sûr que VirtualBox est installé. Afin d’installer VirtualBox, nous avons besoin d’aller dans la page téléchargement et installer la version approprié du système d’exploitation que vous allez utiliser.

Linux (Ubuntu)

Linux (Ubuntu) Afin de répondre aux besoins de ce tutoriel, une installation Ubuntu sera utilisée étant donné que cette distribution Linux est la plus populaire/utilisé en ce moment. La procédure d’installation des autres distributions Linux est similaire.

La première étape pour installer Vagrant sur une machine Ubuntu/Linux est de télécharger le pack d’installation .deb. Le pack aura besoin aussi d’être choisi selon l’architecture du système d’exploitation, soit 32-bit ou 64-bit. Si vous n’êtes pas sûr, utilisez la version 32-bit. Cette image est disponible dans l’adresse Téléchargement du site de Vagrant, comme illustré dans l’image ci-dessous :

Une fois le pack téléchargé, démarrez le fichier soit depuis la fenêtre de navigation/menu ou depuis l’Explorateur de fichier (Nautilus pour Ubuntu). A l’ouverture du fichier, une fenêtre similaire à celle-ci-dessous va ouvrir afin d’initialiser l’installation. L’utilisateur va devoir suivre un processus standard après avoir cliqué sur le bouton d’installation. A un certain point, l’utilisateur va devoir insérer son mot de passe afin de commencer l’installation. Le processus est illustré dans les images ci-dessous :

A la fin de l’installation, la fenêtre initiale va montrer que le pack est installé comme la fenêtre ci-dessous :

Enfin, l’utilisateur peut vérifier si Vagrant a bien été installé en ouvrant un terminal (Ubuntu : Note concernant l’application du Terminal : l’application du terminal peut être démarré d’une manière typique d’Ubuntu avec la combinaison de touches Control + Alt + T) et démarrer la commande :

bash $ vagrant --help

ou

bash $ vagrant –version

Mac OS X

Les premières étapes pour installer Vagrant sur une machine OS X est de télécharger l’image d’installation .dmg. Cette image est disponible à l’adresse Téléchargement du site de Vagrant, comme illustré dans l’image ci-dessous :

Une fois l’image téléchargée, si elle n’est pas automatiquement montée, double cliquez sur le fichier pour la monter. Une fois que l’image est montée, une fenêtre Finder va ouvrir avec le contenu, qui va ressembler à l’image ci-dessous :

A cet instant, vous aurez besoin de démarrer le fichier Vagrant.pkg afin de démarrer l’installation. L’installation suit une procédure standard, requérant que vous double cliquiez sur le bouton continuer qui vous proposera de changer la localisation de l’installation. A la fin de ce processus, il va être demandé à l’utilisateur d’entrer son mot de passe afin de poursuivre l’installation. Le processus est illustré dans l’image ci-dessous :

A cet instant, il est recommandé de démonter l’image, étant donné que l’installation est effectuée. Pour démonter l’image, vous pouvez cliquer sur le bouton affiché dans l’image ci-dessous :

A partir de maintenant, utiliser la ligne de commande vagrant est possible en utilisant Terminal.app (ou iTerm2.app ou tout autre terminal préféré). Un exemple de fonctionnalités est montré ci-dessous :

Windows

Pour commencer, installez VirtualBox avec la version pour Windows.

Ensuite, installez Vagrant avec la version Windows, sur la même page que les autres systèmes d’exploitation. L’installation est simple, suivant le même cycle de Suivant, Suivant, … Fin. Après que l’installation soit finie, Windows requière un redémarrage afin d’aider Vagrant à créer ses paramètres. Après le redémarrage, vous pouvez vérifier avec cmd s’il a été installé en utilisant la commande vagrant. Si tout s’est bien passé, vous allez voir s’afficher quelque chose similaire à ce qui est dans l’image suivante :

Enfin, il reste une dernière étape, il est dit que Vagrant a besoin d’un client SSH (Windows 7/8/10 ne le contiennent pas par défaut), alors nous allons utiliser Putty. Si vous ouvrer ce que vous avez installé, vous verrez une fenêtre qui ressemblerait à :

Démarrage rapide

Initialisation

Bien que quand vous démarriez Vagrant dans cmd, une liste de commandes apparait, pour mettre en place votre propre serveur avec Vagrant seulement certaines sont nécessaires. La commande vagrant init va créer un fichier vagrant dans le dossier qui contient les détails de configuration. C’est un bon exercice de l’ouvrir et de regarder son contenu.

Comment créer votre propre serveur ?

Pour commencer, créez un dossier ou le projet et le serveur vont être, puis ouvrez une commande Prompt dans ce dossier ou vous démarrerez la commande :

$ Vagrant init ubuntu / trusty64

Cela va créer le fichier Vagrantfile décrit ci-dessus. Vagrant fourni des boites (voir prochain chapitre), et pour cet exemple nous allons utiliser ubuntu/trusty64 pour configurer un serveur avec Ubuntu. La prochaine commande à démarrer est :

$ Vagrant up

Quand vous démarrez cette commande pour la première fois, une machine virtuelle est créée en accord avec les paramètres de Vagrantfile mis en place pendant l’initialisation. Pour vérifier si la machine est vraiment en train de fonctionner, ouvrez VirtualBox et quelque chose de similaire à l’image ci-dessous devrait apparaitre :

Aussi, quand vous voudrez juste ouvrir la machine, la commande vagrant up est exécutée.

La dernière commande à exécutée est :

$ Vagrant ssh

Cela va ouvrir une fenêtre dans Ubuntu, qui est, dans la machine que nous avons installée.

Commandes utiles

Vagrant up, pour démarrer la machine

Vagrant halt, pour éteindre la machine

Vagrant SSH, pour ouvrir la fenêtre de la machine créée

Vagrant reload, pour redémarrer la machine

Vagrant destroy, pour supprimer la machine et tous ses paramètres

Vagrant status, pour vérifier le status de la machine Vagrant (si elle est allumée, éteinte, créée, etc.)

Vagrant version, pour afficher la version de Vagrant installée

Vagrant provision, pour forcer le démarrage de tous les scripts

Astuce et petit exercice : ouvrir une commande Prompt et démarrez ‘vagrant’ pour voir la liste des commandes disponibles et une brève description pour chacune, puis démarrez chaque commande affichée avec l’option ‘-h’ (par exemple, pour init, démarrez vagrant init –h et idem pour chacune d’elle).

Boites possibles

Comme vous avez pu le voir ci-dessus, pour démarrer une machine, la commande vagrant init ubuntu / trusty64 a été démarré, et cela veut dire qu’une machine virtuelle qui avait Ubuntu d’installé a été cloné. Vagrant utilise beaucoup de ce genre d’images, depuis lesquelles je peux choisir ce dont nous avions besoin. Ce sont les boites.

Comment ajouter une boite ?

Sur le site HarshiCorp nous pouvons trouver la liste complète des boites disponibles. Pour créer une machine et ajouter une boite, par exemple harshicorp / precise32, nous utilisons les commandes suivantes :

$ Vagrant init

$ Vagrant box add hashicle / precision32

Pour changer la configuration et utiliser la machine, il reste une dernière étape. Ouvrez le fichier Vagrantfile et modifiez les lignes suivantes :

Vagrant.configure ("2") to | config |

Config.vm.box = "hashicle / precision32"

end

Commandes utiles

Vagrant box add + nom de la boite, comme dans l’exemple au-dessus, cela rajoute une boite

Vagrant box list, pour afficher la liste des boites installées localement

Vagrant box update + nom de la boite, pour mettre à jour

Vagrant box remove + nom de la boite, pour supprimer la boite désirée

Tous ce qu’il vous reste à faire est de démarrer la machine avec la commande de vagrant up et l’utiliser !

Configuration avancée

Comme mentionné plus tôt, Vagrant init va générer un fichier de configuration appelé Vagrantfile. Ce fichier est écrit en langage ruby et vous allez devoir suivre les règles de syntaxe de ce langage. Les options de configuration suivre le format suivant : config.vm <module> <options>. Ou <module> représente le module responsable de la configuration (Exemple : « provision », »réseau ») et <options> un ensemble d’arguments assigné à la méthode de configuration. Il y a des exceptions à la règle, respectez le format : config.vm <variable> = <value> avec quelques simple options qui requière une valeur.

Par exemple :

Vagrant.configure ("2") to | config |

# Met en place le type de * box * utilisée

Config.vm.box = "ubuntu/trusty32"

# Met en place un canal d’approvisionnement comment un fichier de configuration (expliqué plus tard)

Config.vm.provision: shell, path: "configure"

# Met en place un canal d’approvisionnement comme séquence d’instructions (expliqué plus tard)

Config.vm.provision: shell, inline: << - SHELL

Sudo apt-get update

SHELL

# Met en place un autre point d’accès pour un fichier appartenant à l’hôte du système d’exploitation

Config.vm.synced_folder "../", "/ tutorial"

# Mise en place d’une configuration de port * (expliqué plus bas)

Config.vm.network "forwarded_port", guest: 8000, host: 9000

end

Les scripts sont démarrés par l’utilisateur root de la machine virtuelle, à moins que le paramètre de privilège dans la configuration soit mis sur faux. Dans ce cas, le script est démarré par l’utilisateur vagrant de la machine virtuelle. Les machines virtuelles avec des systèmes d’exploitation Windows ne sont pas affectées par ce paramètre.

Au même moment, les scripts d’approvisionnement sont démarrés une fois si aucune conduite à suivre n’a été spécifié. A travers le démarrage : le paramètre ‘always’ de la configuration, le script est démarré par a chaque fois que la machine virtuelle est démarrée.

L’exemple ci-dessous utilise une description différente pour la configuration, spécifiant de démarrer à chaque démarrage sans privilèges administrateur.

config.vm.provision "shell", run: "always" do |setup|

setup.path = "provision/run_always.sh"

setup.privileged = false

end

Approvisionnement

L’approvisionnement est la manière dont vagrant prépare la machine virtuelle à chaque instance. L’approvisionnement est fait soit par un système spécialisé comme Docker ou Salt ou par des scripts Shell. Pour les besoins de ce tutoriel, nous allons limiter l’utilisation de scripts Shell. Ils peuvent être déclaré de deux manières, soit par un fichier (exemple : config.vm.provision :shell, path: "configure") ou par un lien internet (exemple : config.vm.provision :shell, inline: "Sudo apt-get update" ).

Typiquement, durant l’utilisation d’un type de système d’exploitation Vagrant, la mise en place est plus simple.

Exemple :

#!/bin/bash

apt-get update &> /dev/null || sudo apt-get update &> /dev/null

apt-get install python2.7 &> /dev/null || sudo apt-get install python2.7 &> /dev/null

apt-get install screen &> /dev/null || sudo apt-get install screen &> /dev/null

Pour mettre en place l’approvisionnement il y a plusieurs options additionnelles qui peuvent être utiles, incluant ;

- Keep_color : ‘true’, cela va assurer que Vagrant ne va pas colorer le résultat de l’approvisionnement différemment (utiliser une couleur dans les messages transmis par un approvisionnement peut être très utile dans le débogage de script ou en maintenance)

- Run : ‘always ‘, pour assurer que Vagrant va démarrer ce script à chaque fois que la machine virtuelle démarre, pas seulement au premier démarrage ou quand spécifié avec --provision / vagrant provision / vagrant reload – provision)

- Privilégié : ‘false’, cela va assurer que Vagrant ne va pas démarrer ce script avec le compte root ; utiliser l’argument ‘true’ va assurer le démarrage du script de permission élévé.

Par exemple :

Vagrant.configure(2) do |config|

config.vm.provision :shell, path: "run", privileged: false, keep_color: true, run: "always"

end

Dossiers synchronisés

Vagrant a la capacité de synchroniser des dossiers depuis la machine hôte vers la machine virtuelle. Pour chaque machine Vagrant, il y a au moins une telle synchronisation entre le dossier ou le fichier Vagrantfile sur la machine hôte et le chemin Vagrant /vagrant localisé sur la machine virtuelle. Des synchronisations additionnelles peuvent être spécifiées dans le fichier Vagrantfile comme dans l’exemple suivant :

Vagrant.configure("2") do |config|

config.vm.synced_folder "~/Desktop", "/host_desktop"

end

Redirection de port

Comme montré plus haut, dans la configuration d’une machine Vagrant, il y a l’option de faire de la redirection de port. La redirection de port est la configuration entre les ports ouverts sur la machine virtuelle et l’hôte, ou la machine sur laquelle la machine virtuelle fonctionne. Cette option est très utile dans beaucoup de cas. Par exemple, le trafic internet du port 80 (le http standard) de l’ordinateur qui fait fonctionner la machine Vagrant peut être retournée directement à la machine virtuelle, omettant le système d’exploitation de base, pour assurer la sécurité et l’isolation de la machine virtuelle. Un autre exemple serait de démarrer un serveur de données simple sur le même port dans plusieurs machines virtuelles identiques mais avec une configuration de port différentes pour être récupéré sur l’hôte par un serveur de collection afin d’assurer une forme de parallélisme.

Pour utiliser la redirection de port, il est nécessaire de rajouter une ligne supplémentaire dans le fichier de configuration Vagrant, comme dans l’exemple suivant, ou le port 8000 de la machine virtuelle est lié au port 9000 de la machine hôte :

Vagrant.configure("2") do |config|

"forwarded_port", guest: 8000, host: 9000

end

Conclusion

Vagrant est un outil pour créer différents environnements sur la même machine afin que pendant le développement d’une application, il peut utiliser le même environnement qu’en production.

L’avantage principal de cet outil est la possibilité de dupliquera un environnement choisi afin de l’utiliser pour une autre application.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels