Créer une box CentOS pour Vagrant
Vagrant est un outil facilitant la gestion d’environnements virtualisés. À partir de boxes (qui sont des images de VMs pré-configurées), Vagrant offre la possibilité de démarrer puis de personnaliser ses VMs.
Principe
L’exemple de base pour récupérer une box Ubuntu :
mkdir test_vm
cd test_vm
vagrant init precise32 http://files.vagrantup.com/precise32.box # crée un fichier de conf VagrantFile dans le répertoire courant
vagrant up # démarre la VM
vagrant ssh # connexion à la VM via... ssh
Par la suite, il sera possible de modifier le fichier VagrantFile pour personnaliser la VM (par le lancement de script shell par exemple). Cela fera l’objet d’un prochain post :)
Pour la suite de cet article, nous allons voir comment créer notre propre box, basée sur CentOS 6.4.
Avant de commencer
- Installer VirtualBox (version 4.3.2) et l’extension pack (nécessaire pour l’USB)
- Installer Vagrant (version 1.5.3)
Installation de CentOS 6.4 sur la VM
Installation de l’OS
- Récupération de l’iso netinstall depuis http://mirror.ovh.net/ftp.centos.org/6.4/isos/x86_64/CentOS-6.4-x86_64-netinstall.iso
- Créer une nouvelle VM depuis VirtualBox (Linux, Redhat 64 bit, 2Go RAM)
- Booter sur l’iso, et utiliser les paramètres suivants
- Url du mirroir : http://mirror.centos.org/centos-6/6/os/x86_64/
- hostname = vagrant-centos64
- mot de passe root = vagrant
- Sélectionner le type d’installation “Minimal Server”
- Redémarrer après l’installation
- Se connecter en root et mettre à jour le système :
root# yum update -y
Configuration post-installation
-
Configurer la redirection des ports depuis VirtualBox :
-
Il est alors possible de se connecter via Putty/SSH au port 2222 :
-
Création de l’utilisateur vagrant (mot de passe = vagrant) :
[root@vagrant-centos64 ~]# adduser vagrant
[root@vagrant-centos64 ~]# ls /home
lost+found vagrant
[root@vagrant-centos64 ~]# id vagrant
uid=500(vagrant) gid=500(vagrant) groups=500(vagrant)
[root@vagrant-centos64 ~]# passwd vagrant
Changing password for user vagrant.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
- Configuration des sudoers :
## visudo -f /etc/sudoers.d/vagrantadmin
Defaults env_keep += "SSH_AUTH_SOCK"
vagrant ALL=NOPASSWD: ALL
- Mettre en commentaire la ligne requiretty dans le fichier sudo :
## visudo
- Test de sudo avec le user vagrant :
[vagrant@vagrant-centos64 ~]$ sudo -l
Matching Defaults entries for vagrant on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, env_keep+=SSH_AUTH_SOCK
\
User vagrant may run the following commands on this host:
(root) NOPASSWD: ALL
[vagrant@vagrant-centos64 ~]$ sudo ls
- Ajout de la clé vagrant (pour la connexion avec la command vagrant ssh) :
[vagrant@vagrant-centos64 ~]$ mkdir ~/.ssh
[vagrant@vagrant-centos64 ~]$ curl -k https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub > .ssh/authorized_keys
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
102 409 102 409 0 0 73 0 0:00:05 0:00:05 --:--:-- 3556
[vagrant@vagrant-centos64 ~]$ chmod 0700 .ssh
[vagrant@vagrant-centos64 ~]$ chmod 0600 .ssh/authorized_keys
- Nettoyage des paquets :
[vagrant@vagrant-centos64 ~]$ sudo yum clean all
- Installer les extensions VirtualBox, depuis Périphériques -> Installer les Additions invités… :
[vagrant@vagrant-centos64 ~]$ sudo mkdir /mnt/cdrom
[vagrant@vagrant-centos64 ~]$ sudo mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[vagrant@vagrant-centos64 ~]$ sudo sh /mnt/cdrom/VBoxLinuxAdditions.run
- Éteindre la VM.
En cas de problèmes
Lors de l’installation par le réseau de Centos, s’il bloque sur l’installation d’un paquet cela peut venir du fait que le mirroir n’est plus disponible (ou n’est pas assez rapide). Il faut alors relancer l’installation avec une nouveau mirroir (à noter que le redémarrage est obligatoire…)
Création de la box
Une box est en fait une archive contenant : * un export de VM au format VirtualBox * un fichier metadata.json indiquant le provider utilisé (ici VirtualBox)
On utilise la commande vagrant package, qui permet de créer l’archive au bon format :
> vagrant package --output centos64-64.box --base "Centos 6.4 box"
[Centos 6.4 box] Clearing any previously set forwarded ports...
[Centos 6.4 box] Creating temporary directory for export...
[Centos 6.4 box] Exporting VM...
[Centos 6.4 box] Compressing package to: .../centos64-64.box
Utilisation de la box
Avant d’utilier la box, il faut l’enregistrer dans la liste des box disponible :
> vagrant box add centos64-64 centos64-64.box
Downloading or copying the box...
Extracting box...ate: 29.4M/s, Estimated time remaining: --:--:--)
Successfully added box 'centos64-64' with provider 'virtualbox'!
Ensuite, il ne reste plus qu’à démarrer :
mkdir test_vm
cd test_vm
vagrant init centos64-64
vagrant up
vagrant ssh
Quelques liens
- Inspiré de cet article
- www.vagrantup.com