[TUTORIEL] Comment créer une machine MongoDB avec Vagrant ?

Vagrant est un logiciel permettant d’automatiser la création de machines virtuelles. Par défaut, Vagrant utilise Virtualbox mais il est possible de déployer les machines virtuelles sur d’autres fournisseurs comme VMWare, HyperV, KVM, AWS ou même Azure.

Comment créer une machine MongoDB avec Vagrant ?

 

Vagrant fonctionne sur la plupart des systèmes d’exploitation. Pour ma part, je dispose d’une machine sous macOs. J’ai donc commencé par installer Virtualbox puis Vagrant.

 

Initialisation de la machine virtuelle et première connexion

Je vous conseille de créer un répertoire puis d’initialiser la machine grâce à la commande suivante:

vagrant init nom_de_la_box

Pour connaître les box disponibles, il suffit d’aller sur le site de vagrant puis de cliquer sur BOXES.

Dans mon cas, j’ai fait une recherche sur Centos et j’ai retenu la version bento/centos-7.2.

Box Vagrant

La commande est donc la suivante :

vagrant init bento/centos-7.2

Initialisation Vagrant

La commande d’initialisation crée en fait un fichier de paramétrage Vagrantfile dans le répertoire courant. Nous le verrons juste après.

On va créer la machine virtuelle avec la commande vagrant up puis se connecter avec vagrant ssh.

On est alors connecté à notre machine Linux avec le compte vagrant qui dispose des droits sudo pour administrer la machine.

Vagrant ssh

Intéressant mais on peut faire mieux !

On va quitter la VM avec la commande CTRL + D

Puis détruire la VM avec vagrant destroy

 

Paramétrage de la machine virtuelle

Pour se faire, on va modifier le fichier Vagrantfile.

Par défaut, la machine est créée avec 1 core et 1024 Mo de RAM.

On va lui en donner un peu plus.

Paramétrage Vagrant

On paramètre aussi le nom de la machine (« mongo.bd »).

Afin de rajouter des logiciels, on déclare un fichier de provisioning (« bootstrap.sh »).

Provisioning Vagrant

Répertoire partagé

Par défaut, vagrant va partager le répertoire courant de notre machine hôte avec la machine virtuelle. Ce répertoire va se retrouver à l’emplacement suivant :

/vagrant/

Cette fonctionnalité est très intéressante et souvent utilisée pour l’étape suivante : le provisioning.

 

Paramétrage du provisioning

Le fichier bootstrap.sh contient des commandes shell qui sont exécutées par l’utilisateur vagrant. Comme cet utilisateur a les droits sudo, on va pouvoir faire beaucoup de choses 😉

On peut par exemple modifier des fichiers de configuration grâce à la commande sed.

Dans la commande suivante, je vais désactiver SELINUX sur ma machine virtuelle :

sudo sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config

On peut installer des composants, par exemple le module de réglage de l’heure :

sudo yum install -q -y ntp ntpdate ntp-doc

Ou encore démarrer des services :

sudo service ntpd start

Plutôt que de modifier des fichiers avec la commande sed, on peut aussi utiliser directement les fichiers présents sur notre répertoire partagé.

Dans l’exemple suivant, j’ai récupéré le fichier repository de mongoDB sur le site et je l’ai placé dans mon répertoire partagé. Il ne me reste plus qu’à le copier dans le bon emplacement pour qu’il soit reconnu ensuite par la commande yum.

sudo cp /vagrant/mongodb-org-3.2.repo /etc/yum.repos.d/

L’installation de mongoDB nécessite d’ajuster plusieurs paramètres. Tout pourra se faire en automatique grâce au fichier bootstrap.

Voici mon fichier complet de provisioning :

Provisioning complet

Lancement de la machine

Une fois le paramétrage terminé, il suffit de relancer la machine avec la commande : vagrant up

Au bout d’une à deux minutes, la machine est opérationnelle. On s’y connecte simplement avec vagrant ssh.

Le service mongod est déjà lancé : on peut donc accéder au shell en tapant simplement mongo.

Démarrage MongoDB

Pourquoi utiliser Vagrant ?

Une fois toutes ces opérations réalisées, on peut encore se demander à quoi sert réellement Vagrant. Il est vrai que tout ce que nous avons fait aurait pu être réalisé de la même manière dans notre machine virtuelle directement. Vagrant offre cependant certains avantages notables.

1. Upgrader facilement votre machine

L’intérêt principal que je vois est de pouvoir upgrader facilement notre machine. Un changement de version de Mongo ? Je modifie mon fichier bootstrap, je relance ma machine et le tour est joué.

2. Disposer d’un véritable bac à sable

Le deuxième intérêt est de disposer d’un véritable bac à sable. Exemple : j’ai suivi une formation sur mongoDB et lLes exercices nécessitaient de modifier de nombreux paramètres. Ce qui était un peu pénible à détricoter pour se remettre à la fin dans une configuration standard. Avec Vagrant, pas de soucis : je détruis ma VM, je la relance et je me retrouve avec une VM toute neuve à chaque fois.

3. Pouvoir partager votre VM

Le dernier intérêt est de pouvoir partager notre VM avec d’autres développeurs. Il suffit pour cela de s’échanger principalement les fichiers vagrantfile et bootstrap et l’on peut reconstituer à l’identique une VM à partir de 0. Un moyen simple pour cela est de les publier sur Github. On clone le projet, puis on lance la machine avec vagrant up et c’est terminé.

Nous verrons dans un prochain article encore d’autres fonctionnalités proposées par Vagrant. A bientôt !

 

 

Il n'existe pas de commentaire pour le moment.

Laissez un commentaire

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

*