#Vagrant: création d'une box {{INLINETOC}} #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