Nixos : faire une image pour Proxmox

L’objectif de ce post est d’avoir une doc sur la génération d’un template de VM pour Proxmox.

Nous allons voir toutes les étape pour générer un fichier de VM Nixos, l’inclure dans Proxmox, le personnaliser et le transformer en template réutilisable.

Créer une image à intégrer à Proxmox

La première étape consite à créer sur son poste un image de VM au format Proxmox

nix --extra-experimental-features nix-command --extra-experimental-features flakes run github:nix-community/nixos-generators -- --format proxmox

Cette commande va générer un fichier dans le store de nix. Elle est extremement basique. Elle démarre et il y a un simple compte root sans mot de passe.

Copier l’image générée sur le proxmox :

scp /nix/store/6c6n1lrdc30mk6fd9d5rbhiyba8inm0c-proxmox-nixos-22.05.3010.dd1f4d98244/vzdump-qemu-nixos-22.05.3010.dd1f4d98244.vma.zst root@192.168.10.112:/var/lib/vz/dump/

Maintenant que l’image est sur notre Proxmox on peut la supprimer :

nix --extra-experimental-features nix-command store gc

Transformer un fichier image en template dans Proxmox

Maintenant que notre image est sur notre serveur Proxmox, nous allons créer une VM :

qmrestore /var/lib/vz/dump/vzdump-qemu-nixos-22.05.3010.dd1f4d98244.vma.zst 101 --unique true

Note : cloud-init peut être activé via : services.cloud-init.network.enable = true;

A partir de là, nous pourrions transformer cette VM en template, mais comme il est trop basique, on va la modifier. Vous pouvez la démarrer.

Lorsque la VM sera démarrée, le seul moyen d’y accéder c’est via la console, car le compte root ne possède pas de mot de passe.

Perso je suis pas fan de la console série, donc je défini un mot de passe à root, puis je me connecte à la VM en SSH. On supprimera le mot de passe plus tard.

Customisation de la VM

Comme vous l’aurez remarqué, la VM ne possède pas de dossier /etc/nixos c’est brut.

On va le générer :

nixos-generate-config

Attention par defaut ssh est désactivé.

J’ai un dépôt avec une config de “base”, comme les packets que j’aime retrouver sur une VM ou simplement mon compte utilisateur :

nix-shell -p git --run git clone https://git.atlanticaweb.fr/alexandre/nixos-template-PX.git

Après avoir apporté vos configurations de base, on fait le ménage et on éteint la VM:

rm -rf nixos-template-PX
passwrd -d root
nix-collect-garbage -d
poweroff

Transformation de la VM

Maintenant que notre modèle est terminé, on peut le transformer en template et supprimer l’image dans /var/lib/vz/dump/

Nouvelle VM

Le disque par défaut fait que 2Go, ci-dessous les commandes, pour rappel, pour l’agrandir (après avoir configuré la nouvelle VM et lui avoir attribué un disque plus grand):

parted /dev/vda
resizepart 1 100%
quit
resize2fs /dev/vda1
Généré avec Hugo
Thème Stack conçu par Jimmy