«

juil 14

HowTo : Créer une Custom Box Vagrant

Bonjour à tous,

Aujourd’hui, je vais vous expliquer comment créer une Custom Box CentOS 7 pour VMware Fusion / WorkStation.

Et oui, pour ceux qui connaissent un peu Vagrant, la plupart des box sont faites pour VirtualBox (Vagrant fait payer 80$ pour le provider VMware Fusion / Workstation) mais moi, personnellement, je préfère faire mes labs avec VMware Fusion. Question de goût qui ne s’explique pas forcément.

Un petit rappel : Mais kesako Vagrant ?

Vagrant, dans le monde moderne du DevOPS, est un outil qui permet le déploiement (et la suppression) automatique d’environnements virtuels (VMware, AWS, ou autres) complètement configurer pour les développeurs (ou pour des tests).

1.  Création d’une VM dans Fusion

Je ne vais pas donner plus de détail pour cette tâche car je pars du principe que si vous lisez cet article, vous savez créer une VM dans Fusion ou Workstation. :)

Dans ce cas, je précise tout de même que j’utilise la version Mini de CentOS 7 qui est téléchargeable ici.

2. Création d’un compte Admin « vagrant » et l’ajouter dans les sudoers

Lors de l’installation de l’OS, il vous est demandé de créer un compte. Dans notre cas, on va créer un compte administrateur avec les caractéristiques suivantes:

  • Nom d’utilisateur : vagrant
  • Mot de passe : vagrant

Le compte root doit également être configuré avec le mot de passe : « vagrant »

Une fois que cela est fait, il faut ajouter ce compte dans le fichier « sudoers ».

Last login: Mon Jul 13 20:24:23 on ttys000
macbook-pro-de-ehrman:~ Nicolas$ ssh root@172.16.204.129
The authenticity of host ‘172.16.204.129 (172.16.204.129)’ can’t be established.
RSA key fingerprint is 18:c3:18:01:cf:f7:c9:3f:3a:4e:60:34:88:46:ad:5c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.16.204.129’ (RSA) to the list of known hosts.
root@172.16.204.129’s password:
Last login: Tue Jul 14 10:15:51 2015
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[root@vagrant-centos7 ~]# visudo

Juste en dessous de ces lignes :

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

Ajouter les lignes suivantes :

## Allow vagrant to sudo without password
%admin  ALL=NOPASSWD: ALL

Sauvegardez et quittez le fichier avec la commande “:wq”.

3. Ajouter la clé non sécurisée pour la connexion ssh

Se connecter en tant qu’utilisateur vagrant et tapez les commandes suivantes depuis le répertoire home de l’utilisateur :

1

2
3
4
5
6
$ mkdir -p /home/vagrant/.ssh
$ chmod 0700 /home/vagrant/.ssh
-O /home/vagrant/.ssh/authorized_keys
$ chmod 0600 /home/vagrant/.ssh/authorized_keys
$ chown -R vagrant /home/vagrant/.ssh

4. Modifier la configuration SSH de la VM

Maintenant, nous allons modifier la configuration SSH de notre VM pour que Vagrant puisse s’y connecter.

Tout d’abord, on édite le fichier de configuration du serveur ssh:

Une fois cela fait, on sauvegarde le fichier avec « :wq » et on fait un redémarrage du service ssh via « sudo service sshd restart »

5. Installation des VMware Tools

On approche de la fin. :)

Bien évidemment, pour que cela fonctionne bien dans un environnement virtuel, il faut installer les guest tools correspondant à l’hyperviseur. Dans notre cas, les VMware Tools.

Pour cela, il faut tout d’abord y ajouter quelques packages pour que la compilation et l’installation se passe correctement:

$ sudo yum install -y gcc make kernel-devel

Ensuite, depuis les menus VMware, on clique sur « Virtual Machines / Install VMware Tools ».

Cela va monter le cdrom des VMware Tools dans la VM.

Depuis la VM, on tape les commandes suivantes:

1
2
3
4
5
$ sudo mkdir -p /mnt/cdrom
$ sudo mount /dev/cdrom /mnt/cdrom
$ tar xzvf /mnt/cdrom/VMwareTools-9.9.3-2759765.tar.gz -C /tmp
$ cd /tmp/vmware-tools-distrib/
$ sudo ./vmware-install.pl

Répondre « Yes » pour toutes les options avancées comme le sharing, le copier/coller et autres. Sinon, il faudra réinstaller les tools pour que Vagrant puisse déployer la box correctement.

6. Faire un Clean Up

Et oui, comme on veut créer une box la plus reproductible, fiable et légère possible, il faut faire le ménage sur la VM.

Il faut bien évidemment commencer par supprimer les fichiers d’installation des VMware Tools qui se trouvent dans le dossier /tmp.

Ensuite, on clean yum :

1
$ sudo yum clean all

Et bien sur, on fini par un bon petit shutdown des familles :)

1
$ sudo shutdown -h now

7. Finalisation de la Box

Nous y sommes presque. :)

Nous allons enfin pouvoir créer notre box. Nous allons donc nous positionner dans le dossier qui contient les fichiers de la VM.

Dans ce dossier, nous allons créer un fichier qui se nomme « VagrantFile » avec le contenu suivant:

# -*- mode: ruby -*-
# vi: set ft=rubyVagrant.configure(« 2″) do |config|config.vm.provider :vmware_fusion do |v, override|
v.gui = true
end

end

Bien sur, on l’enregistre avec la commande « :wq ».

Toujours dans le même dossier, on va créer un autre fichier que l’on va appeler « metadata.json » et qui aura le contenu suivant:

{« provider »: »vmware_fusion »}

Toujours la commande magique pour sauvegarder le fichier.

Pour finir, on va optimiser le disque de la VM:

$ /Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager -d Virtual Disk.vmdk
$ /Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager -k Virtual Disk.vmdk
Et la, le grand moment arrive enfin. On va packager la box.

Pour cela, toujours dans le dossier contenant les fichiers de la VM, on tape la commande suivante:

$ tar cvzf centos7-mini-x64.box ./*

And voila !!!!!!

On est prêt à tester la Box avec Vagrant. :)

8. Test de la box avec Vagrant

Pour cela, depuis la commandline vagrant, on tape :

1
2
3
$ vagrant box add centos7-mini centos7-mini-x64.box
$ vagrant init centos7-mini
$ vagrant up

Si tout se passe bien (et c’est sur que cela sera le cas), la box se déploie dans VMware Fusion et se configure automatiquement.

Une fois le processus terminé, on tape la commande suivante pour s’assurer que l’on peut se connecter à la VM :

& vagrant ssh

 

Et voila mesdames, messieurs, vous avez fait une custom box vagrant pour déployer un CentOS7 en version minimale.

Vous pouvez trouver la custom box que j’ai faite ici.

Bon courage et à bientôt.

 

Nicolas

Share

Lien Permanent pour cet article : http://www.my-v-world.fr/archives/227

Laisser un commentaire

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

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>