Quitter le forum et retourner au site

Proxmox

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 748
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Proxmox

Message par le Manchot Masqué »

Face aux produits concurrents avec des licences >6000€, sauvegarde non comprise, Proxmox est clairement LA solution la moins onéreuse du marché pour qui veut une machine avec un hyperviseur complet. Qui plus est : l'intégration des conteneurs LXC est très bien foutue, et permet de créer et d'isoler efficacement des petits services, en mode privilégié (le root du conteneur est le root de proxmox) ou non. Enfin, la version actuelle propose une sauvegarde intégrée franchement convaincante (automatisation rapide avec rétention réglable). Bref, c'est le genre d'outil parfait pour PME/PMI, ou geek à barbe longue qui a juste envie de s'amuser et de découvrir. Je ne l'ai pas dit, mais Proxmox gère aussi la haute disponibilité et la réplication sur un autre noeud (non testé mais dispo dans l'interface)... On est vraiment dans la vision d'un centre de données (datacenter) de type hébergeur.
Attention : il faut quand même une machine dédiée qui a de la puissance. Visez à minima un quad/8 threads avec 16Go de RAM et un bon SSD pour vous faire la main... En machine d'occasion, un dell silencieux et efficace dans les 210€ + 2x60€ de disque SSD 500Go (NVME pour le principal et SATA pour la sauvegarde suivant évidemment la carte mère du PC) fera l'affaire.
Il faut récupérer l'ISO du logiciel sur le site de Proxmox, utiliser dd pour la transférer sur une clé USB dont le contenu sera évidemment écrasé, puis démarrer sur la dite clé USB, et faire l'installation en mode graphique, laquelle ne pose aucun problème particulier. Il faut ensuite, depuis une autre machine, utiliser un navigateur web - Firefox au hasard - pour accéder à l'interface graphique qui permet de tout gérer, et d'accéder graphiquement aux VM et conteneurs LXC.

Ce qui suit sont des petites astuces découvertes au fil des essais, notamment sur les conteneurs, avec Proxmox en version 8.1.4 :

Astuce : au démarrage, Proxmox écrase le fichier /etc/resolv.conf du conteneur. L'astuce est alors de créer un fichier vide

Code : Tout sélectionner

touch /etc/.pve-ignore.resolv.conf
dans le conteneur même, qui va lui dire de se calmer et de vous laisser la main.
La même chose existe pour le fichier /etc/hosts :

Code : Tout sélectionner

touch /etc/.pve-ignore.hosts
Astuce : si vous voulez faire du montage cifs, il vous faudra obligatoirement un conteneur privilégié, installer le paquet cifs-utils, viser votre point de montage dans /etc/fstab - sur le format :

Code : Tout sélectionner

//$SERVER/iso /iso cifs ro,user,username=$USER,password=$PASS,domain=$DOMAIN 0 0
Bien entendu, on peut aussi choisir de monter le partage dans l'hôte principal et créer des liaisons dans le container avec les options de type bind.
On peut aussi fustiger ce bon vieux /etc/fstab, et faire une unité systemd de type .mount - c'est juste plus lourd à écrire, mais ça marche aussi...
Bref, chacun a sa méthode - l'essentiel, c'est que ça marche !

Astuce : pour les conteneurs privilégiés, on constate que le démarrage en console est beaucoup plus lent, et notamment le message

Code : Tout sélectionner

Failed to activate service 'org.freedesktop.login1': timed out (service_start_timeout=25000ms)
Pour s'en défaire, un

Code : Tout sélectionner

systemctl mask systemd-logind
semble régler le problème. Certains préconisent en outre de passer par

Code : Tout sélectionner

pam-auth-update
en désélectionnant l'option Enregistrer les sessions utilisateurs règle le problème.

Astuce : dans un conteneur privilégié, on veut faire de l'export NFS via /etc/exports. Problème : le

Code : Tout sélectionner

systemctl start nfs-kernel-server
ne veut pas démarrer. Une rapide analyse démontre que c'est (encore) ce ^@\`~é~&~# de apparmor qui bloque ! On peut le vérifier avec

Code : Tout sélectionner

mount -t nfsd nfsd /proc/fs/nfsd
on se chope l'erreur

Code : Tout sélectionner

mount: /proc/fs/nfsd: cannot mount nfsd read-only.
Pas le choix : il faut ouvrir le bash du nœud Promox principal, et dans /etc/pve/lxc/CTID.conf, se rajouter l'option

Code : Tout sélectionner

features: nesting=1
et redémarrer le conteneur. L'option nesting consiste à activer la virtualisation dans le conteneur. Autrement dit vous pouvez faire de la virtualisation imbriquée (de la VM dans une VM), pour le meilleur et pour le pire. Maintenant pourquoi NFS requiert cette option - si vous avez l'explication, je suis preneur...


Astuce : dans un conteneur privilégié, on veut monter une image ISO, comme un DVD Mint ou Ubuntu pour faire un serveur PXE par exemple... Il faut encore passer par le bash du nœud Promox principal, conteneur arrêté, et dans /etc/pve/lxc/CTID.conf, se rajouter :

Code : Tout sélectionner

lxc.cgroup2.devices.allow = b 7:* rwm
lxc.cgroup2.devices.allow = c 10:237 rwm
lxc.mount.entry = /dev/loop0 dev/loop0 none bind,create=file 0 0
lxc.mount.entry = /dev/loop1 dev/loop1 none bind,create=file 0 0
lxc.mount.entry = /dev/loop2 dev/loop2 none bind,create=file 0 0
lxc.mount.entry = /dev/loop3 dev/loop3 none bind,create=file 0 0
lxc.mount.entry = /dev/loop4 dev/loop4 none bind,create=file 0 0
lxc.mount.entry = /dev/loop5 dev/loop5 none bind,create=file 0 0
lxc.mount.entry = /dev/loop6 dev/loop6 none bind,create=file 0 0
lxc.mount.entry = /dev/loop-control dev/loop-control none bind,create=file 0 0
On peut ensuite faire, dans le conteneur en marche, un :

Code : Tout sélectionner

mount -o loop ubuntu-mate-XY.0A.Z-desktop-amd64.iso dossier_de_montage/
On peut ensuite modifier le /etc/fstab pour faire le montage automatique au démarrage du conteneur :

Code : Tout sélectionner

/srv/pxe/ubuntu-mate-XY.0A.Z-desktop-amd64.iso /srv/pxe/ubuntu/2204 iso9660 loop 0 0
Astuce : dans /etc/ssh/sshd_config,

Code : Tout sélectionner

ListenAddress A.B.C.D:port
n'est pas honoré dans le conteneur LXC par défaut. On le voit avec

Code : Tout sélectionner

ss -tunlp
qui renvoit ::22 au lieu de A.B.C.D:22, bref, si vous avez plusieurs interfaces, c'est un trou de sécurité... Il faut passer par :

Code : Tout sélectionner

systemctl mask ssh.socket
systemctl mask sshd.socket
systemctl disable sshd
systemctl enable ssh
reboot
et bien vérifier au redémarrage que tout est ok.

Astuce : pour ajouter un disque de stockage ici en nvme, blkid pour repérer l'UUID de la partition ext4, puis on modifie /etc/fstab :

Code : Tout sélectionner

UUID=12b2...1ca /mnt/nvme ext4 defaults 0 2
puis on met à jour systemd :

Code : Tout sélectionner

systemctl daemon-reload
On créé le dossier et on rajoute la partition de sauvegarde :

Code : Tout sélectionner

mkdir /mnt/nvme/backup && pvesm add dir backup-nvme --path /mnt/nvme/backup
mais en fait, il vaut mieux passer par le GUI > Centre de données > Stockage et préciser > Ajouter > Répertoire en indiquant les options "Image disque" ou "Conteneur" ou "Fichier de sauvegarde VZDump"...

Astuce : refaire le certificat et la clé privée de proxmox :

Code : Tout sélectionner

pvecm updatecerts --force
C'est utile quand vous avez changé l'IP et le nom DNS indiqués à l'installation de base, qui sont forcément inscrits dans le certificat du nœud proxmox. On ne touche pas à l'autorité et son certificat propre, qui ont n'ont pas de raison d'être modifiés. Sinon je n'ai pas vu d'option pour exporter directement le certificat d'autorité dans un fichier texte en .crt. Il faut donc passer par le nom du nœud proxmox, puis Système > Certificats, pour afficher le certificat CA et l'exporter manuellement dans un fichier texte, puis rajouter l'autorité dans le magasin de certificats de Firefox à partir de ce même fichier, sinon on a droit à l'avertissement d'un CA non reconnu à chaque redémarrage du navigateur.

Astuce : non fonctionnelle (piste à creuser) - rajouter l'USB à un conteneur LXC pour pouvoir fournir le service d'impression CUPS par exemple. Il faut ajouter à la fin de /etc/pve/lxc/CTID.conf :

Code : Tout sélectionner

lxc.cgroup.devices.allow: c 188:* rwm
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/usb/lp0 dev/usb/lp0 none bind,optional,create=file,uid=7,gid=7,mode=0666
lxc.mount.entry: /dev/usb/lp1 dev/usb/lp1 none bind,optional,create=file,uid=7,gid=7,mode=0666
L'exemple ici pour 2 imprimantes ne fonctionne pas : /dev/usb/lp0 et /dev/usb/lp1 sont bien créés dans le conteneur, mais en nobody:nogroup et 660, alors qu'au départ ils sont en root:lp et 660. Dans un conteneur non privilégié, il semble "normal" de remplacer root par lp (uid=7) côté proprio, et de garder lp (gid=7) en groupe, le 0666 servant juste pour le test. Cela étant, uid/gid/mode ne sont pas pris en compte pour le moment, et c'est plutôt gênant car j'avoue ne pas faire confiance à CUPS pour faire un conteneur en mode privilégié... Si quelqu'un a la solution...

Pour info : cf. https://www.kernel.org/doc/Documentatio ... evices.txt

Code : Tout sélectionner

 188 char	USB serial converters
		  0 = /dev/ttyUSB0	First USB serial converter
		  1 = /dev/ttyUSB1	Second USB serial converter
		    ...

 189 char	USB serial converters - alternate devices
		  0 = /dev/cuusb0	Callout device for ttyUSB0
		  1 = /dev/cuusb1	Callout device for ttyUSB1
		    ...
Astuce : postfix en SMTP dans les conteneurs LXC. Il faut installer

Code : Tout sélectionner

apt install libsasl2-modules
pour éviter l'erreur

Code : Tout sélectionner

warning: SASL authentication failure: No worthy mechs found
Sinon il faut bien entendu utiliser les mécanismes sender_canonical et sasl_passwd classiques, avec un main.cf du type (donné pour info, à adapter) :

Code : Tout sélectionner

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, localhost.$mydomain, localhost
#relayhost = 
mynetworks = 127.0.0.0/8
#inet_interfaces = loopback-only
recipient_delimiter = +

compatibility_level = 2

inet_interfaces = all
inet_protocols = all

smtp_use_tls = yes
relayhost = smtp.MON_FAI.fr:587
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = login
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_use_tls=yes
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
Astuce : le conteneur a son horloge déphasée ? Un simple

Code : Tout sélectionner

dpkg-reconfigure tzdata
et tout rentre dans l'ordre
Répondre