logo vagrant

Encore plus de fonctionnalités avec Vagrant

Dans l’article précédent, nous avons vu comment créer une box vagrant à partir de 0. Dans cet article, on allons voir comment créer une box vagrant à partir d’une machine virtuelle déjà existante. Dans notre cas, il s’agit d’une machine Quickstart Cloudera 5.8.

Quel est l’intérêt de créer une box vagrant à partir d’une machine virtuelle ? Profiter des avantages de vagrant !

- Pour automatiser le paramétrage ou l'ajout de composants additionnels
- Pour automatiser l'initialisation de la VM

Pré-requis

- Installation de vagrant
- Installation de virtualbox
- Téléchargement de la machine virtuelle quickstart cloudera (version 5.8)

Préparation de la machine virtuelle

On va commencer par ajouter une redirection de port pour se connecter en ssh. Cela se passe dans la configuration réseau de virtualbox. On va ajouter une redirection du port 2222 de la machine hôte vers le port 22 de la machine invitée.

On se connecte ensuite à la machine avec le user/mdp fourni (dans notre cas: cloudera/cloudera). Une fois connectée à la machine, on crée l’utilisateur vagrant (mot de passe: vagrant).

On va attribuer les droits sudo à vagrant:

sudo visudo

Puis ajout de la ligne:

vagrant ALL=(ALL) NOPASSWD: ALL

Sortir de la machine virtuelle et revenir sur la machine hôte Copier la clé publique de vagrant sur la machine virtuelle (si besoin récupérer les clés sur https://github.com/mitchellh/vagrant):

ssh-copy-id -i ~/.ssh/vagrant.pub vagrant@127.0.0.1 -p 2222

On vérifie ensuite qu’on peut se connecter sans fournir le mot de passe. A ce stade, la machine virtuelle est prête pour devenir une box vagrant.

Création d’une box vagrant et partage

Il suffit de lancer la commande suivante:

vagrant package --base my-virtual-machine

my-virtual-machine est comme son nom l’indique le nom que porte votre machine virtuelle dans virtualbox.

Cette commande va exporter votre machine et créer un fichier package.box. Cela va prendre quelques minutes, la durée dépendant de la taille de votre VM. Vous pouvez maintenant ajouter cette box à la liste des box disponible sur votre machine.

vagrant box add my-box package.box

Dans mon cas, je l’ai simplement appelé “cloudera”:

vagrant box add cloudera package.box

Après cette opération, vous pouvez maintenant utiliser la box cloudera dans vos fichiers Vagrantfile pour initialiser une nouvelle box.

Il est également possible de partager votre box avec d’autres utilisateurs. Le site Atlas vous offre la possibilité d’héberger et de partager vos box gratuitement.

box atlas

N’hésitez pas à visiter le site de Vagrant pour découvrir toutes les fonctionnalités de cet outil.

Installation de Nifi sur ma VM Cloudera

Nifi est une solution d’intégration de données très intéressante. Nous la découvrirons dans un prochain article. Nous allons voir ici simplement comment l’installer. Si vous n’avez pas lu l’article précédent, c’est le moment de le faire ;)

Nifi nécessite Java 8 comme pré-requis. Or la VM Cloudera dispose de Java 7. On va donc paramétrer notre fichier bootstrap.sh pour installer dans un premier temps Java 8 avant d’installer ensuite Nifi. J’ai téléchargé au préalable le paquet java sur le site d’Oracle ainsi que l’archive Nifi et je les ai placé dans le sous répertoire extra de mon répertoire partagé. Les fichiers sont alors accessibles via le chemin:

/vagrant/extra/

A noter également que Nifi utilise le port 8080 par défaut. Or ce port est déjà utilisé par Cloudera. On va donc modifier le fichier de configuration de Nifi (via une commande sed) pour remplacer ce port 8080 par le port 8989.

On peut également en profiter pour déposer sur notre VM des fichiers. Très utile dans le cadre d’une formation par exemple. Il suffit pour cela de créer un sous répertoire exercices dans notre répertoire courant et de rajouter une instruction dans le bootstrap pour copier ce sous-répertoire partagé à l’emplacement souhaité de votre VM.

Voici mon fichier bootstrap.sh complet:

bootstrap nifi

A bientôt pour découvrir ensemble Nifi