Déployez de la Debian avec Vagrant en créant vos propres Box!!

Introduction

Vagrant est un outil d’automatisation de déploiement de machines virtuelles. Il permet de déployer des environnements complets de manière automatisé en créant des machines virtuelles (sur Virtualbox par exemple).

Pour déployer des machines virtuelles, Vagrant utilise des Box à savoir des modèles de machines virtuelles. Une multitude de Box sont disponibles en ligne mais nous sommes nombreux à être méfiant quant à l’utilisation de « boîte noire » comme modèle pour nos déploiements. Je vous propose donc ici de voir, comment en 5 minutes nous allons pouvoir exploiter la puissance de Vagrant en partant d’une machine virtuelle installée à la main par nos soins.

Prérequis

Pour commencer, vous allez avoir besoin de Vagrant (https://www.vagrantup.com/downloads.html) et d’un hyperviseur, dans notre cas, nous utiliserons Virtualbox, vous devez donc l’installer (https://www.virtualbox.org/).

Vous devez ensuite créer une machine virtuelle et installer Debian 10 dessus.(https://www.debian.org/distrib/). Je ne détaille pas ici les étapes d’installation car il y a plusieurs manières de procéder et l’idée de l’article est que vous fassiez un modèle spécifique à vos besoins.

Préparation de la VM de base

Afin de créer sa propre Box, il convient de faire quelques adaptations à notre VM pour l’interfacer avec les commandes Vagrant.

Avant de démarrer la VM, vous pouvez désactiver les contrôleurs que vous n’utiliserez pas dans vos déploiements comme le contrôleur USB et le son.

Le reste des adaptations se fait en SSH sur la VM.

Installation des Additions invité VirtualBox

Dans l’interface de Virtualbox, ajouter le CD pour l’installation des Additions invité, dans le menu du haut : Périphériques > Insérer l’image CD des Additions invité..

Puis dans la machine virtuelle :

sudo apt-get install linux-headers-$(uname -r) build-essential dkms
sudo mount /dev/cdrom /media/cdrom
sudo sh /media/cdrom/VBoxLinuxAdditions.run

Contexte utilisateur

Créer un user vagrant :

useradd -m -s /bin/bash vagrant
passwd vagrant

Par convention, il convient de mettre le mot de passe vagrant pour le user vagrant et pour root.

Afin d’utiliser la commande vagrant ssh, il convient de mettre la clé publique de Vagrant dans les clés autorisées:

mkdir /home/vagrant/.ssh
wget -O /home/vagrant/.ssh/authorized_keys  https://github.com/hashicorp/vagrant/raw/master/keys/vagrant.pub

chown -R vagrant:vagrant /home/vagrant/.ssh
chmod 700 /home/vagrant/.ssh
chmod 600 /home/vagrant/.ssh/authorized_keys 

Comme la VM n’aura pas forcément une configuration réseau lui permettant d’accéder à Internet, il convient de désactiver l’usage du DNS dans l’agent SSH pour éviter une lenteur à la connexion :

sudo sed -i '/UseDNS/c\UseDNS no' /etc/ssh/sshd_config

Dans la pratique avec Vagrant, il faut pouvoir se connecter avec l’utilisateur vagrant et passer des commandes `root` sans saisir de mot de passe, nous installons donc sudo

apt install sudo
visudo 

# ajouter la ligne : vagrant ALL=(ALL) NOPASSWD: ALL

Vous pouvez ici en profiter pour glisser vos outils préférés ;

apt install htop vim ccze

Arrêt de la machine

Vider le cache `APT` (pour gagner quelques Mo) et l’historique, et arrêter la machine proprement :

apt clean
history -c
halt

Une fois que l’écran est noir, vous pouvez fermer la fenêtre Virtualbox.

Packaging de la Box Vagrant

Maintenant que notre machine virtuelle est prête à être déployée, nous pouvons la packager avec les commandes Vagrant:

vagrant package --base Debian10ForVagrant --output Debian10VagrantBox.box

La box est maintenant prête et nous pouvons utiliser le .box pour rendre notre nouvelle Box utilisable sur l’installation Vagrant que l’on veut.

Importer la box pour l’utiliser :

vagrant box add --name Debian10 Debian10VagrantBox.box

Utilisation de notre box Vagrant

La box est maintenant disponible et nous pouvons créer des machines virtuelles avec cette nouvelle base :

mkdir testdebianbox
cd testdebianbox
vagrant init Debian10
vagrant up

Note : La commande vagrant init prend en argument le nom de la box à utiliser. Le nom de la machine virtuelle sera déterminé par le nom du répertoire où se situe le fichier `Vagrantfile` (ici « testdebianbox »).

Testons ensuite l’accès SSH, aucun mot de passe ne doit nous être demandé et nous pouvons passer des commandes sudo et toujours sans mot de passe :

vagrant ssh

Conclusion

Les Box Vagrant proposées sur Internet sont très pratique mais au final, mieux vaut prendre 30 minutes pour se faire sa propre Box et ainsi garder la maîtrise sur ses environnements. Même si cette Box peut s’avérer un peu plus grosse, elle sera probablement plus proche de vos environnements de production.

Sources

https://www.vagrantup.com/docs/boxes/base.html

https://www.vagrantup.com/docs/virtualbox/boxes.html

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *