Table of Contents

Vagrant: création d'une box

Configurer le système invité

Installer n'importe quel système d'exploitation Linux dans libvirt / qvm et se connecter à celui-ci pour la personnalisation

Editer le fichier /root/.profile

$ sudo nano /root/.profile

# ~/.profile: exécuté par des shells de connexion compatibles Bourne.
if ["$ BASH"]; then
   if [-f ~/.bashrc]; then
   .~/.bashrc
   Fi
Fi
mesg n # remplace cette ligne par "tty -s && mesg n"

Note: Ceci évite un avertissement, au lancement de vagrant plus tard.

Changer le nom d'hôte

 vi /etc/hostname
 
 dgfip-base

Configurer le nom d'hôte

vi /etc/hosts
  
127.0.0.1 dgfip-base localhost
#Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
:: 1 localhost ip6-localhost ip6-loopback
ff02 :: 1 ip6-allnodes
ff02 :: 2 ip6-allrouters

Créer un utilisateur vagrant avec mot de passe vagrant

[root] # adduser vagrant
[root] # passwd vagrant
Changement de mot de passe pour l'utilisateur vagrant.
Nouveau mot de passe : 
MOT DE PASSE INCORRECT : basé sur un mot du dictionnaire
MOT DE PASSE INCORRECT : est trop simple
Retapez le nouveau mot de passe : 
passwd : mise à jour réussie de tous les jetons d'authentification.

Configurer les droits sudo de l'utilisateur vagrant

L'utilisateur vagrant doit être qutorisé à exécuter des commandes sudo sans une invite de mot de passe

sudo visudo -f /etc/sudoers.d/vagrant

et coller

vagrant ALL=(ALL) NOPASSWD:ALL

Installer openssh-server

yum install -y openssh-server

Importer la clé ssh de l'utilisateur vagrant

mkdir -p /home/vagrant/.ssh
chmod 0700 /home/vagrant/.ssh
scp user@xx.xx.xxx.xxx:/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/keys/vagrant.pub /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh

modifier /etc/ssh/sshd_config

  PubKeyAuthentication yes
  AuthorizedKeysFile %h/.ssh/authorized_keys
  UseDNS no

Installer les paquets supplémentaires

installer des packages de développement supplémentaires pour les outils pour compiler et installer correctement

yum install-y gcc build-essentiel kernel-headers kernel-headers-devel automake autoconf

Modifier le message de bienvenue

Intégrer dans le message d'accueil le numéro de version

vi /etc/motd

-
Bienvenue dans la version 0.1.0 de dgfip-base!

Vérifier les modifications

Redémarrer le serveur invité

shutdown -r now

Se connecter avec le compte vagrant et vérifier que le message du jour (motd) mis en place s'affiche:

Last login: Thu Apr 26 10:26:24 2018 from xx.xx.xxx.xx
-
Bienvenue dans la version 0.1.0 de dgfip-base!
-
-(jeu. avril 26 10:53:58)--(dgfip-base:~)-

Arrêter la VM

 shutdown -h now

Préparation de la box vagrant

Récupérer l'image du système

Sur la machine hôte dans laquelle VM est en cours d'exécution aller dans /var/lib/libvirt/images/ et choisir l'image brute dans laquelle ont été faites les modifications et copier quelque part par exemple /test

cp /var/lib/libvirt/images/test.img ~/VagrantBoxes

Création de la configuration

Passer dans le répertoire VagrantBoxes.

cd ~/VagrantBoxes
  

créer deux fichiers metadata.json et Vagrantfile

Créer le fichier metadata.json

vi metadata.json

{
  "provider"     : "libvirt",
  "format"       : "qcow2",
  "virtual_size" : 40
}

Créer le fichier Vagrantfile

vi Vagrantfile

Vagrant.configure("2") do |config|
     config.vm.provider :libvirt do |libvirt|
     libvirt.driver = "kvm"
     libvirt.host = 'localhost'
     libvirt.uri = 'qemu:///system'
     end
config.vm.define "new" do |dgfipbase|
     custombox.vm.box = "dgfip-base"       
     custombox.vm.provider :libvirt do |test|
     test.memory = 1024
     test.cpus = 1
     end
     end
end

Les noms d'étiquettes entre les pipes ne doivent comporter que des caractères alphabétiques.

Convertir test.img en format qcow2

sudo qemu-img convert -f raw -O qcow2  test.img  invite.qcow2

Renommer ubuntu.qcow2 en box.img

mv invite.qcow2 box.img

Empaquetage de la box

Empaqueter la box

 tar cvzf dgfip-base-0.1.0.box ./metadata.json ./Vagrantfile ./box.img

L'empaquetage prendra un certain temps.

Note: Afin de pouvoir construire plusieurs versions de la vm dgfip-base, le numéro de version ets ajouter dans le nom du fichier box.

Tester la nouvelle box

Passer dans le répertoire VagrantTest

cd ~/VagrantTest

Ajouter la box à vagrant

vagrant box add 'dgfip-base' file://~/VagrantBoxes/dgfip-base-0.1.0.box

En cas de succès, on doit voir une sortie comme ceci:

==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'dgfip-base' (v0) for provider: 
    box: Unpacking necessary files from: file:///root/VagrantBoxes/dgfip-base-0.1.0.box
==> box: Successfully added box 'dgfip-base' (v0) for 'libvirt'!

Notez le v0. Il n'y a pas encore de version spécifiée.

Initialiser le projet vagrant

vagrant init dgfip-base

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant

Maintenant, il y a un fichier Vagrantfile avec les paramètres par défaut dans votre répertoire actuel.

Modifier ce fichier Vagrantfile en utilisant un éditeur de texte

# Modifier la ligne suivante de
config.vm.box = "base"
# à
config.vm.box = "devops"
# enregistrer le fichier

Note: base est le nom par défaut du vagrant pour une boîte. Mais nous avons dit à la boîte vagabonde ajouter le nom Devops.

Lancer la VM vagrant

vagrant up --provider=libvirt