Table des matières

Introduction à Vagrant

Vagrant est un outil permettant de créer et de gérer des environnements de machines virtuelles dans un seul flux de travail. Avec un flux de travail convivial et centré sur l’automatisation, Vagrant réduit le temps de configuration de l’environnement de développement, augmente la parité de production et fait du “travail sur ma machine” un prétexte du passé.

Si vous êtes déjà familiarisé avec les bases de Vagrant, la documentation fournit une meilleure construction de référence pour toutes les fonctionnalités internes disponibles.

Pourquoi Vagrant ?

Vagrant fournit des environnements de travail faciles à configurer, reproductibles et portables, basés sur une technologie standard et contrôlés par un seul flux de travail cohérent, afin de maximiser la productivité et la flexibilité de votre équipe.

Pour réaliser sa magie, Vagrant se tient sur les épaules de géants. Les machines sont configurées sur VirtualBox, VMware, AWS ou tout autre fournisseur disponible. Ensuite, les outils de provisioning standard tels que les scripts shell, Chef ou Puppet peuvent installer et configurer automatiquement les logiciels sur la machine virtuelle.

Pour les développeurs

Si vous êtes développeur, Vagrant isolera les dépendances et leur configuration dans un seul environnement cohérent et jetable, sans sacrifier les outils avec lesquels vous avez l'habitude de travailler (éditeurs, navigateurs, débogueurs, etc.). Une fois que vous ou quelqu'un d'autre créez un seul fichier Vagrant “Vagrantfile”, il vous suffit de faire “vagrant up” et tout est installé et configuré pour que vous puissiez travailler. Les autres membres de votre équipe créent leurs environnements de développement à partir de la même configuration. Ainsi, que vous travailliez sous Linux, Mac OS X ou Windows, tous les membres de votre équipe exécutent du code dans le même environnement, avec les mêmes dépendances, tous configurés de la même manière. Dites au revoir aux bugs “travaille sur ma machine”.

Pour les opérateurs

Si vous êtes un ingénieur d'exploitation ou un ingénieur DevOps, Vagrant vous fournit un environnement jetable et un flux de travail cohérent pour le développement et le test de scripts de gestion d'infrastructure. Vous pouvez rapidement tester des éléments tels que les scripts shell, les Cookbooks Chef, les modules Puppet, etc. à l'aide de la virtualisation locale telle que VirtualBox ou VMware. Ensuite, avec la même configuration, vous pouvez tester ces scripts sur des clouds distants tels qu'AWS ou RackSpace avec le même flux de travail. Amenez vos scripts personnalisés à recycler les instances EC2, arrêtez de jongler avec les invites SSH sur différentes machines et commencez à utiliser Vagrant pour améliorer votre santé mentale.

Pour les designers

Si vous êtes un concepteur, Vagrant définira automatiquement tout ce qui est requis pour votre application afin que vous puissiez vous concentrer sur ce que vous faites le mieux: la conception. Une fois qu'un développeur a configuré Vagrant, vous n'avez plus à vous soucier de la manière de faire fonctionner cette application. Ne dérangez plus les autres développeurs pour vous aider à réparer votre environnement afin que vous puissiez tester les conceptions. Il suffit pour cela de consulter le code, faire un “vagrant up”, et commencer à concevoir.

Pour tout le monde

Vagrant est conçu pour tout le monde comme le moyen le plus simple et le plus rapide de créer un environnement virtualisé!

Prérequis

Installation de Vagrant

L'installation de Vagrant est extrêmement facile. Rendez-vous sur la page des téléchargements Vagrant et procurez-vous le programme d'installation ou le package approprié pour votre plate-forme. Installez le package en utilisant les procédures standard pour votre système d'exploitation.

Le programme d'installation ajoutera automatiquement “vagrant” à votre chemin système pour qu'il soit disponible dans les terminaux. Si ce n'est pas le cas, essayez de vous déconnecter puis de vous reconnecter à votre système (cela est particulièrement nécessaire parfois pour Windows).

Attention:

Vous recherchez via la commande : gem install ? Vagrant 1.0.x avait la possibilité d'être installé en tant que RubyGem. Cette méthode d'installation n'est plus prise en charge. Si vous avez une ancienne version de Vagrant installée via Rubygems, supprimez-la avant d'installer les nouvelles versions de Vagrant.

Attention:

Méfiez-vous des gestionnaires de paquets système ! Certaines distributions de systèmes d'exploitation incluent un paquet vagrant dans leurs dépôts de paquets en amont. Veuillez ne pas installer Vagrant de cette manière. En règle générale, ces packages ne contiennent pas de dépendances ou incluent des versions très obsolètes de Vagrant. Si vous installez via le gestionnaire de paquets de votre système, il est fort probable que vous rencontriez des problèmes.

Sur un environnement Debian/Ubuntu

[root@srv ~]# wget https://releases.hashicorp.com/vagrant/2.1.5/vagrant_2.1.5_x86_64.deb
[root@srv ~]# dpkg -i vagrant_2.1.5_x86_64.deb

Sur un environnement Redhat/CentOS

[root@srv ~]# wget https://releases.hashicorp.com/vagrant/2.1.5/vagrant_2.1.5_x86_64.rpm
[root@srv ~]# yum localinstall vagrant_2.1.5_x86_64.rpm

Vérifier l'installation

[root@srv ~]# vagrant -v
Vagrant 2.1.5

Utilisation de Vagrant

Il existe différentes box packagées pour vagrant, vous en trouverez à cette adresse : https://app.vagrantup.com/boxes/search.

Positionnez vous dans le répertoire courant du projet dans lequel vous souhaitez utiliser vagrant et saisissez la commande “vagrant init”:

[user@srv ~] vagrant init debian/stretch64

Cette commande va générer un fichier “Vagrantfile” permettant de configurer la VM. A ce stade, cette dernière n'est pas encore créée. Exécutez ensuite la commande :

[user@srv ~] vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'debian/stretch64' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default: 
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Rsyncing folder: /home/user/Bureau/vagrant/debian-base/ => /vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
 
==> default: Machine 'default' has a post `vagrant up` message. This is a message
==> default: from the creator of the Vagrantfile, and not from Vagrant itself:
==> default: 
==> default: Vanilla Debian box. See https://app.vagrantup.com/debian for help and bug reports

Cette commande va lancer le démarrage de la VM.

Si celle-ci n'existe pas elle sera téléchargée et déposée dans votre répertoire de VM configuré au niveau de votre VirtualBox. Cette étape peut durer une vingtaine de minutes en fonction de votre connexion internet.

Une fois téléchargée, vous verrez votre VM apparaître dans la liste de vos machines disponibles dans VirtualBox.

Vous pouvez ainsi vous connecter en ssh à la VM grâce à la commande

[user@srv ~] vagrant ssh

Création d'une Box Vagrant

Il existe une multitude de box étonnantes disponibles sur des sites tels que “vagrantcloud.com”, alors pourquoi voudriez-vous créer votre propre boîte?

Pour cela, Il suffit d'installer une VM sur VirtualBox et de suivre la procédure qui suit.

Nous allons créer l'enveloppe sur VirtualBox comme suit pour déployer une base RHEL/CENTOS 7.

Modifiez les paramètres matériels de la machine virtuelle pour améliorer les performances et parce que SSH nécessite l'activation du transfert de port pour l'utilisateur vagrant:

Installer le système d'exploitation

Mettre en place RHEL/CentOS 7 est très simple.

Suivez les instructions à l'écran et lorsque vous êtes invité à configurer un utilisateur, définissez-le user suivant : “vagrant” et le mot de passe “vagrant”. Ne pas oublier de définir le mot de passe “root”.

Définir les droits SUDO : vagrant

Vagrant doit pouvoir exécuter les commandes sudo sans invite de mot de passe.

Le moyen le plus efficace pour configurer l'utilisateur vagrant afin qu'il puisse utiliser sudo sans être invité à entrer un mot de passe est de l'ajouter à la liste des sudoers comme suit:

visudo -f /etc/sudoers.d/vagrant

Tout ce qui se trouve dans le dossier /etc/sudoers.d/* est inclus dans les privilèges «sudoers» lorsqu’il est créé par l’utilisateur root. C’est pourquoi nous avons créé cela en tant qu’utilisateur root et dans ce dossier.

Avec ce fichier ouvert, ajoutez ceci au fichier, puis enregistrez-le.

# Add vagrant user
vagrant ALL=(ALL) NOPASSWD:ALL

Maintenant, vous pouvez tester son fonctionnement en exécutant une commande simple:

sudo pwd

Il retournera le dossier personnel sans vous demander de mot de passe si tout est configuré correctement. Si vous êtes invité à entrer un mot de passe, c'est qu'il y a un problème.

Assurez-vous que ce test réussisse.

Mettre à jour le système d'exploitation

Une des raisons pour lesquelles nous construisons cette boîte est pour que nous puissions gagner du temps en étant déjà à jour. Commençons donc par mettre à jour le système.

yum update

En général, s’il existe des mises à jour du noyau, redémarrer le serveur.

shutdown -r now

Installer les clés SSH : vagrant

Nous allons à cette étape déployer la clé ssh. Celle-ci est disponble sur github.

Action à réaliser en tant que user vagrant :

mkdir -p .ssh
chmod 0700 /home/vagrant/.ssh
wget --no-check-certificate \
    https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub \
    -O /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys

Installation des addons

Nous allons installer sur notre box les addons VirtualBox pour optimiser l'image sur celui-ci.

sudo yum install bzip2
sudo yum groupinstall "Development Tools"
sudo yum install kernel-devel
 
sudo mount /dev/cdrom /mnt 
cd /mnt
sudo ./VBoxLinuxAdditions.run

Construction de la box

Voilà, nous y sommes, nous allons enfin construire notre propre box.

[user@lnxMint]:~/Bureau/vagrant$ mkdir centos
[user@lnxMint]:~/Bureau/vagrant$ cd centos/
 
[user@lnxMint]:~/Bureau/vagrant/centos$ vagrant package --output Centos7-base.box --base Centos7-base
==> Centos7-base: Clearing any previously set forwarded ports...
==> Centos7-base: Exporting VM...
==> Centos7-base: Compressing package to: /home/user/Bureau/vagrant/centos/Centos7-base.box

Tester la nouvelle box

[user@lnxMint]:~/Bureau/vagrant/centos$ vagrant box add Centos7-Vagrant Centos7-base.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'Centos7-Vagrant' (v0) for provider: 
    box: Unpacking necessary files from: file:///home/user/Bureau/vagrant/centos/Centos7-base.box
==> box: Successfully added box 'Centos7-Vagrant' (v0) for 'virtualbox'!
 
[user@lnxMint]:~/Bureau/vagrant/centos$ vagrant box list
Centos7-Vagrant  (virtualbox, 0)
[user@lnxMint]:~/Bureau/vagrant/centos$ vagrant init Centos7-Vagrant
[user@lnxMint]:~/Bureau/vagrant/centos$ vagrant up

Publier votre nouvelle box

Pour la publication de votre box, il suffira de créer un compte sur https://app.vagrantup.com/

Un fois connecter :

Cliquer sur : Create Box

New Box Version

Cliquer sur Create Version

Plus bas, nous allons choisir le provider New Box Provider

Il suffira d'uploader le fichier.

Annexe

Documentation officielle : https://www.vagrantup.com/docs/

Commande de base :