Gestionnaire de VM (Virtual Machine) et de CT (ConTainer) via une interface web, qui à défaut d'être sexy est rudement efficace.
Les VM sont gérées par KVM et les CT par LXC. C'est donc du natif Linux, avec des solutions intégrées au noyau, qui est proposé.
Proxmox est un programme qui peut s'installer par dessus une Debian. Cependant, la finalité (héberger des VM et des CT) fait qu'il est plus pertinent d'avoir une machine dédiée à cetet activité. C'est pourquoi Proxmox est également proposé sous forme de distribution Linux : cela installe Debian et Proxmox déjà configuré en même temps.
Proxmox propose des dépôts, il y a les dépôts entreprise, dont l'accès nécessite une souscription. Le contenu (à vérifier) semble être un ensemble de paquets applicatifs courants, dont la stabilité est éprouvée.
Il est possible sinon de se contenter de dépôts pve-no-subscription
qui contient notamment les paquets Proxmox à jour.
## fichier /etc/apt/sources.list.d/pve-no-subscription.list ## PVE 8 sur DEBIAN BOOKWORM deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
Proxmox n'offre pas de solution native pour gérer les containers Docker. Le mieux est de passer par une VM, qui se chargera d'héberger un ou des containers Docker.
J'ai eu plusieurs soucis avec des CT qui ne fonctionnaient plus correctement après des maj de l'hôte. Il ya une fonction appelée nesting
qui résout bcp de problèmes, elle semble activée par défaut dans Proxmox 8.
Sinon on la trouve dans les options des CT, sur la ligne Features
, il faut renseigner nesting=1
On peut avoir 2 containers avec le même nom (hostname). Pratique si on souhaite réinstaller un nouveau container qui aura la même fonction qu'un déjà existant, et qu'il faudrait maj ou réinstaller tout en conservant l'ancien online le temps de l'installation.
On peut modifier l'ip en live d'un CT. Attention, il semble possible d'avoir 2 CT avec la même ip, de quoi foutre le bazar sur le réseau !
On lit aussi sur internet qu'en clonant des VM (et peut-être aussi des CT) qu'on peut se trouver également avec des doublons de MAC address. Heureusement, on peut changer la MAC depuis l'interface web.
On peut vouloir passer à des VM des contrôleurs hardware de son PC sans que ceux-ci soient virtualisés. Par exemple, un GPU, ou alors un contrôleur SATA pour laisser Truenas accéder directement aux HDD et pouvoir gérer du ZFS proprement, accéder aux fonctions SMART, etc.
Sur des config à base d'intel, des activations manuelles sont à prévoir.
Dans le bios/uefi, il faut que les options VT-d
et VT-x
soient activées
Il faut dire au kernel de Linux que les fonctions IOMMU doivent être activées. ça se passe dans /etc/default/grub
GRUB_CMDLINE_LINUX="intel_iommu=on"
Puis, il faut mettre à jour le grub : update-grub
, puis reboot
## PAS TESTE ##
ça se passerait dans /etc/kernel/cmdline
, où il faut ajouter intel_iommu=on
.
Puis ensuite update-initramfs -u
, puis reboot.
Une autre option du kernel peut être ajoutée si le matériel la supporte (comment vérifier ?) : iommu=pt
Le moyen le plus simple est d'essayer d'ajouter un pci passthrough et voir si l'interface de Proxmox rouspète ou non.
Mais on peut aussi taper qques lignes de commandes, voir https://pve.proxmox.com/wiki/PCI_Passthrough#Verify_IOMMU_is_enabled
On peut partager un dossier de l'hôte à un container LXC, ça se passe en CLI sur l'hôte :
# Editer le fichier /etc/pve/lxc/xxx.conf et rajouter # xxx = ID du container mp0: /mnt/shared_bindmount,mp=/shared # NOTE : /mnt/shared_bindmount correspond au dossier sur l'hôte # NOTE : mp=/shared correspond au point de montage sur le CT
Cela peut être utile pour contourner les restrictions de montage d'un dossier SMB/NFS dans un container LXC unprivileged, voir lxc_smb
Proxmox est pratique car bon nombre d'opérations de sysadmin peuvent être réalisées depuis la GUI. Et notamment les backup automatisées.
En étant sur la vue cluster, on a un onglet backup depuis lequel on peut configurer des backup-jobs, au sein desquels on peut réaliser des backup sur une sélection de CT/VM. L'outil permet de faire du reporting en envoyant un email en cas d'échec et/ou de réussite du job.
Mais si on souhaite mettre en place un autre type de reporting (healthchecks), il faut passer par un hook script. Ce genre de solution de monitoring par ping http rajoute une couche de surveillance sur la régularité du job : “il aurait du avoir lieu cette nuit, il n'y a pas eu de ping, il y a donc un problème”.
Pour rajouter un hook script, ce n'est pas si compliqué.
Première étape, créer le script (ne pas oublier de le rendre executable) :
#!/bin/bash case "$@" in job-start) curl -m 10 --retry 5 https://healthchecks.example.com/ping/<uuid>/start ;; job-end) curl -m 10 --retry 5 https://healthchecks.example.com/ping/<uuid> ;; job-abort) curl -m 10 --retry 5 https://healthchecks.example.com/ping/<uuid>/fail ;; esac
Ensuite, il faut dire à Proxmox d'utiliser le script, ça se passe dans le fichier /etc/pve/jobs.conf
Il faut rajouter une ligne script /path/to/script
à chaque job concerné
exemple :
vzdump: backup-118e64d8-85ab comment GeoSSL auto-backup schedule *-01,03,05,07,09,11-03 07:00:00 compress 0 enabled 1 fleecing 0 mailnotification always mailto luc.masson@geoconnectics.com mode snapshot notes-template {{guestname}}-AUTO prune-backups keep-last=5 script /root/hook_backup_letsencrypt.sh ## <-- AJOUT storage vm_dump vmid 101
NOTE 1 : on peut aussi rajouter cette ligne avec la commandepvesh /cluster/backup/backup-<id> –script /path/to/script
, mais pour connaitre le backup-<id>, il faut ouvrir ce fichier
NOTE 2 : si on veut vérifier que ça fonctionne, on peut lancer le backup job à la main depuis la GUI de pve, mais en prenant soin de rafraichir la page/changer de vue sur la GUI (cluster → node → cluster à nouveau)