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
$ wget–no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
-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:
$ sudo vi /etc/ssh/sshd_config
|
1
2
3
4
5
6
7
|
Port 22
PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no
|
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
|
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