Dans cette cinquième partie de la série sur KVM, nous allons commencer à creuser un peu car faire des machines à partir d’une ISO, c’est rigolo, mais ce n’est pas pratique. Question automatisation, on a vu mieux.
Il est tout a fait possible de l’automatiser avec la fonction de preseed. C’est un fichier qui simule ce que vous pourriez taper au clavier. C’est mieux, mais bon, ça reste pas terrible terrible à mon gout.
On va donc tenter de faire quelque chose qui va nous rapprocher de ce que Xen permet avec xen-create-image, en utilisant debootstrap.
Debootstrap, c’est un truc tout bête qui vous permet de préparer une Debian depuis une autre Debian.
Et avec cette façon de faire, on peut encore procéder de deux façons…
La première, qu’on va voir ici et qui est similaire aux machines Xen par défaut, où une VM va utiliser le noyau de l’hyperviseur pour booter.
I – Préparatifs
On va créer le LV en passant par virsh :
# virsh vol-create-as kvm-lvm debiandeboot 4G
On peut le voir dans :
# virsh vol-list kvm-lvm
Ensuite, on va simplement le formater :
# mkfs.ext4 /dev/vg0/debiandeboot
Puis on le monte :
# mount /dev/vg0/debiandeboot /mnt
II – Debootstrap
Il suffit de l’installer :
# apt install debootstrap
Et tout simplement :
# debootstrap stable /mnt/
Bien sur, on s’assure que le point de montage soit disponible.
Ensuite, on va juste changer le mdp root de cette nouvelle Debian en chrootant :
# chroot /mnt
Puis :
chroot# passwd root chroot# exit
Avant de lancer la création de la machine, on va désactiver une fonction qui, sinon, va nous faire un boucle pendant 30 sec.
On édite le fichier /etc/initramfs-tools/conf.d/resume pour modifier :
# RESUME=xxxxxx RESUME=none
On termine avec :
# update-initramfs -u
On pense à démonter :
# umount /mnt
III – Création de la VM
On lance la création de la machine :
virt-install --name debiandeboot --vcpus 1 --cpu host --ram 1024 --import --disk vol=kvm-lvm/debiandeboot,bus=virtio --network=none --boot kernel=/vmlinuz,initrd=/initrd.img,kernel_args="root=/dev/vda console=ttyS0" --graphics none --console pty,target_type=serial --os-variant debian10
- import : permet de spécifier que l’OS est deja installé
- disk : on spécifie le nom du volume et le nom de l’image
- network : ici pas besoin de réseau, on veut juste une machine basique pour le test
- boot : c’est la que la magie opère, on lui spécifie le noyau de l’hyperviseur. Attention dans la partie kernel_args, ne pas inverser les options, sinon, ça plante…
IV – Conclusion
Une fois la machine chargée, on peut se connecter dessus, mais, c’est tout.
Le FS est en read only (bah oui, pas de fstab), le hostname n’est pas configuré, le swap n’existe pas, pas de réseau…. il manque plein de choses, mais au moins, ça boot.
L’important ici était de vous montrer la technique.
Dans la partie suivante, nous commencerons à préparer le terrain pour créer des VMs « complètes », en préparant un template pour nos futures VMs.