Proxmox

Quoi ? Tu veux mettre un buzzer dans le téléviseur ? Non mamie, je vais installer un cluster sur mes hyperviseurs !

[Proxmox] PVE

Introduction

PVE pour Proxmox Virtual Environment est un hyperviseur libre permettant la création de machines virtuelles ainsi que de conteneur LXC.

Il est gratuit et adapté aux utilisation personnelles et professionnelles.

image.png

Prérequis

Installation

La première étape consiste à créer un support de démarrage avec l'ISO de Proxmox.

Une fois la clé USB flashée, lancer le processus d'installation et préparer si possible une adresse IP fixe pour le serveur.

Suivez les étapes d'installation.

[Proxmox] Dépôts sans souscription

Introduction

Par défaut, les dépôts de Proxmox sélectionnés sont les dépôts de la version Enterprise réservé aux utilisateurs ayant acheté une licence.

Cependant, si aucune clé de licence n'est spécifiée, les dépôts ne seront pas utilisables.

C'est ainsi qu'entre en jeu les dépôts No-Subscription qui permettent aux utilisateurs sans licence de pouvoir bénéficier de mise à jour et des dépôts de Proxmox.

Modification des dépôts PVE et Ceph

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak && mv /etc/apt/sources.list.d/ceph.list /etc/apt/sources.list.d/ceph.list.bak
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list && echo "deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph-no-subscription.list

[Proxmox] Supprimer message subscription

Introduction

Lorsque vous utilisez Proxmox en mode no-subscription, un message apparaît à chaque fois que vous vous connectez pour vous rappeler que vous n'avez pas de licence.

Si vous utilisez Proxmox quotidiennement, cela peut vite devenir gênant.

Commande

Voici la commande qui va supprimer ce message (à refaire à chaque MAJ de Proxmox) :

sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

 

[Proxmox] Cluster

Introduction

Les clusters Proxmox sont des groupes de serveurs Proxmox (appelés noeuds) qui permettent d'étendre les fonctionnalités de Proxmox.

Ils sont nécessaire pour faire de la migration d'un serveur à l'autre, de la haute disponibilité et pour pouvoir gérer tous les serveurs Proxmox depuis la même interface.

image.png

Prérequis

Installation

Dans notre configuration nous aurons 3 serveurs Proxmox vierges, fraîchement installés :

Depuis le Node 1, on va se rendre dans Datacenter > Cluster  pour créer le cluster :

image.png

On donne un nom au cluster et on sélectionne l'interface réseau de celui-ci :

image.png

Une fois que le message "Task OK" apparaît, on peut fermer la fenêtre :

image.png

Désormais, on peut cliquer sur Join Information pour afficher et copier les informations nécessaires pour rejoindre le cluster :

image.png

image.png

Ensuite, on peut venir se connecter sur le Node 2 et se rendre dans Datacenter > Cluster pour cliquer sur Join Cluster :

image.png

On peut coller les informations copiées précédemment, saisir le mot de passe root du Node 1 ainsi que sélectionner l'interface réseau connecté au cluster :

image.png

On peut ensuite cliquer sur le bouton Join '<CLUSTER NAME>' et attendre que la connexion avec le serveur échoue.

Il faudra rafraîchir la page manuellement pour constater que le noeud à bien été ajouté au cluster après le plantage de Proxmox (un message Connection Error devrait apparaître en fond).

On peut réitérer les opération faites sur le Node 2 sur le Node 3 pour qu'il puisse à son tour rejoindre le Cluster :

image.png

image.png

Si on se reconnecte sur un des trois noeuds, on s'aperçoit que le cluster est créé et fonctionnel :

image.png

[Proxmox] CEPH et HA

Introduction

La mise en place de CEPH vous permet d'avoir un disque partagé entre les noeuds de votre cluster Proxmox.

Cela sera utile notamment pour la haute disponibilité (HA) que l'on mettra en place dans un second temps.

image.png

Prérequis

Installation de CEPH

Ajout des disques et carte réseaux CEPH

La première étape va être d'ajouté un disque partagé dans chacun des noeuds du cluster.

J'utilise un environnement VMware mais on peut très bien le faire avec des disque physiques sur des serveurs dans une baie :

image.png

image.png

image.png

image.png

J'ajoute un disque d'une taille de 10Go :

image.png

image.png

image.png

Puis on réitère l'opération sur chacun des noeuds du cluster Proxmox.

Désormais, il faut ajouter une carte réseau sur chaque noeud pour le réseau CEPH (192.168.201.0/24) et ajouté un Linux Bridge sur chacun des noeuds Proxmox :

image.png

N'oubliez pas d'appliquer la configuration réseau en appuyant sur Apply configuration.

Installation de CEPH sur les noeuds

Une fois les VMs redémarrées avec leur nouveau disque et nouvelle carte réseau, rendez-vous sur le Node 1 dans l'onglet et cliquer sur Installer CEPH :

image.png

Puis on peut lancer l'installation de la version actuelle de CEPH (quincy dans notre cas) :

image.png

Une fois l'installation terminée, on clique sur Next :

image.png

L'écran de configuration de CEPH devrait s'ouvrir et vous devrez sélectionner l'interface du réseau CEPH.

Vous devriez voir cette configuration :

image.png

Pour le moment, l'état de santé n'est pas bon puisque nous avons pas de stockage CEPH définit.

Maintenant, il faut réitérer l'installation de CEPH sur chacun des noeuds du cluster.

Configuration des Moniteurs et Managers

Désormais ce qui est recommandé, c'est de configurer chacun des noeuds avec le rôle Monitor et Manager pour qu'on puisse avoir de la surveillance du pool même si un des noeud tombe.*

Par défaut, le Node 1 possède déjà les rôles Monitor et Manager.

On commence par aller sur le Node 1 dans CEPH > Moniteur puis Créer :

image.png

On sélectionne d'abord le Node 2 :

image.png

Puis le Node 3 :

image.png

Et on fait de même pour le rôle Manager qui est juste en dessous avec nos Node 2 et 3 :

image.png

image.pngimage.png

Au final vous devriez avoir cette configuration :

image.png

Création des OSDs

Les OSDs sont les disques partagés CEPH.

On va commencer par configurer un OSD sur le Node 1 en allant dans CEPH > OSD  puis Create OSD :

image.png

On peut sélectionner le disque sur lequel on souhaite installer CEPH (/dev/sdb dans notre cas) :

image.png

Réitérer l'opération sur chacun des noeuds du cluster.

Vous devriez avoir la configuration suivante :

image.png

Création du pool de stockage

L'objectif va être de créer un groupe (pool) d'OSDs qui sera utilisé par nos VMs.

Pour cela, on se rend sur le Node 1 dans CEPH > Pools puis Create :

image.png

On choisit un nom ainsi que la taille du pool qui correspond au nombre d'OSD présent dans le pool :

image.png

 La taille minimale (Min Size) signifie que le pool continuera de fonctionner avec seulement 2 noeuds sur 3 disponibles.

Le stockage CEPH devrait apparaître sur chacun des noeuds :

image.png

Installation de la Haute Disponibilité (HA)

Création de la VM pour la HA

Nous allons créer une VM qui prendra en charge la HA, ce qui signifie qu'elle sera automatiquement répliquée sur le une autre noeud si le noeud principal de VM venait à devenir défaillant.

La migration ne sera effective que si les lecteurs CD sont supprimés des VMs sinon elle échouera systématiquement.

Pour cela nous allons créer une VM de manière standard mais nous allons l'installer sur le stockage CEPH :

image.png

Vous pouvez créer et installer votre VM normalement, la configuration de la HA viendra après ces étapes.

Configuration de la HA sur le cluster

Désormais, on va configurer la HA sur le cluster.

Pour cela, rendez-vous dans Cluster > HA > Groups puis Create :

image.png

Ensuite, donnez un nom à votre groupe de VM du Node 1 pour sa configuration HA et définissez les priorités :

image.png

Plus la priorité est haute, plus les VMs appartenant à ce groupe auront tendance à se rendre sur le noeud correspondant.

On peut maintenant créer les groupes HA pour les Nodes 2 et 3 :

image.png

image.png

Ajout des ressources pour la HA

L'objectif va être de définir les VMs qui devront utiliser notre configuration HA.

Pour cela, rendez-vous dans HA Puis Add :

image.png

On peut sélectionner notre VM debian-test (mettez la VM où vous souhaitez activer la HA), sélectionner le groupe HA que l'on souhaite ici pool-ha-01 et cliquer sur Add :

image.png

La HA est désormais fonctionnelle sur votre VM.

On peut le tester en arrêtant le Node 1 et la VM doit être migrée sur le Node 2.

[Proxmox] Création VM Windows

Introduction

L'installation d'une machine virtuelle Windows sur Proxmox est un peu plus fastidieuse qu'une machine virtuelle Linux.

Source

Prérequis

Préparation de la VM

Installation

Lors du démarrage de la VM, appuyez sur une touche pour démarrer sur le lecteur CD de Windows.

Ensuite, suivez le processus d'installation jusqu'au menu suivant :

image.png

Cliquez sur Charger un pilote puis choisissez vioscsi\2k19\amd64 .

Vous pouvez continuer l'installation de Windows normalement.

Drivers

Après l'installation vous verrez que vous n'avez pas accès au réseau à cause de certains pilotes manquants.

Pour corriger cela, il suffit de se rendre sur le lecteur CD pour exécuter le fichier C:\virtio-win-gt.msi .

Activer Windows et la suite Office

Lanez une session Powershell en administrateur et lancez la commande suivante :

irm https://get.activated.win/ | iex

 

[Proxmox] Gestion de VMs en CLI

Introduction

Lors d'un dépannage d'appoint, il peut s'avérer utile de manipuler vos machines virtuelles et vos conteneurs depuis le shell via la commande qm.

Cheat-sheet

Lister vos VMs

qm list

Démarrer une VM

qm start <VMID>

Éteindre une VM

qm shutdown <VMID>

Forcer l'arrêt d'une VM

qm stop <VMID>

 

[Proxmox] Conteneur LXC

Introduction

Proxmox en plus de la création de machine virtuelle, permet la création de conteneur LXC qui ne sont rien d'autres que des conteneurs Linux plus légers, plus souples et plus performant que des VMs.

De plus, les images turnkey permettent d'obtenir des conteneurs prêt à l'emploi pour déployer divers types de service et répondre à vos besoins. 

image.png

Déployer un conteneur LXC

La première étape consiste à télécharger l'image dont vous avez besoin directement depuis l'interface de Proxmox en vous rendant dans un espace de stockage prêt à accueillir des CT templates, par défaut il s'agit de local.

Dans mon cas, local > CT Templates > Templates :

image.png

Vous pouvez télécharger vos images à travers le menu suivant, qu'il s'agisse de conteneur Linux vanilla ou de conteneur Turnkey pour votre plus grand plaisir !

image.png

Dans mon cas, je possède déjà une image Debian 12 standard, que je vais déployer pour l'exemple.

Pour ce faire, sélectionnez le noeud sur lequel vous souhaitez installer le conteneur et cliquez sur Create CT :

image.png

La fenêtre suivante devrait apparaître où vous devrez indiquer les informations du conteneur dont le mot de passe root :

image.png

Vous pouvez charger une clé SSH qiu sera installée sur le conteneur dès sa création.

Ensuite, sélectionnez l'image à utiliser pour déployer le conteneur (ici, debian) :

image.png

Choisissez la taille du disque virtuel à allouer au conteneur :

image.png

Les conteneurs permettent un redimensionnement du disque à chaud !

Allouez des coeurs de processeur au conteneur :

image.png

Allouez de la mémoire vive (RAM) au conteneur et du swap :

image.png

Définissez les paramètres réseaux et confirmez :

image.png

image.pngimage.png

Une fois votre conteneur est créé vous pouvez y accéder de la même manière qu'une machine virtuelle :

image.pngUne fois, le conteneur démarré, vous pouvez vous rendre dans la console et vous apercevoir que celui-ci est prêt à l'emploi et qu'aucun processus d'installation n'est requis contrairement à une VM :

image.png

Il ne vous reste plus qu'à vous connecter avec le compte root et le mot de passe précédemment définit.

[Proxmox] Spice

Introduction

Le protocole SPICE est utilisé pour accéder graphiquement à la console de vos machines virtuelles sur Proxmox.

Il est plus agréable d'utilisation que le serveur VNC utilisé par défaut à travers le navigateur puisqu'il permet une meilleure intégration ainsi que le support du copier-coller (ce qui est extrêmement avantageux).

Configuration de SPICE pour votre VM

Tout d'abord, sélectionnez votre machine virtuelle depuis le menu principal de Proxmox, rendez vous dans l'onglet Hardware et ouvrez l'option Display :

image.png

Faites défiler le menu déroulant Graphic Card et sélectionnez SPICE :

image.png

Client SPICE sur Linux

Ensuite il vous faut un logiciel client SPICE sur votre machine pour pouvoir accéder à la console via le protocole.

Pour cela, je vous recommande d'installer le paquet virt-viewer :

sudo apt install -y virt-viewer

Désormais, une fois sur Proxmox lorsque vous cliquerez sur le bouton Console, un fichier sera téléchargé sur votre machine.

Il vous suffira de l'ouvrir avec virt-viewer et le tour est joué ! 

Spice-guest-tool sur Windows

Pour faire fonctionner le copier-coller et le transfert de fichier, vous devez installer les spice-guest-tools sur la machine virtuelle windows.

Pour cela, rendez-vous sur le site de Spice dans la catégorie Guest > Windows Binaries :

https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe

 

[Proxmox] PBS

Introduction

Proxmox dispose d'un système de sauvegarde appelé PBS pour Proxmox Backup Server.

Celui-ci permet de gérer les sauvegardes de machines virtuelles de votre serveur Proxmox.

Voici quelques options intéressantes proposées par PBS :

image.pngSource

Installation

ISO

Bien que PBS s'installe sur Debian, il est préférable d'utiliser l'ISO si vous souhaitez y dédier un serveur.

Une fois que vous avez lancé le processus d'installation suivez les instructions afin d'installer le système.

Manuelle

Sinon, si vous souhaitez installer PBS sur un serveur Debian ou Ubuntu, vous pouvez lancer la commande suivante :

echo "deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription" >> /etc/apt/source.list && wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg && apt update && apt install -y proxmox-backup

Puis redémarrez le système.

Accéder à l'interface web

Ensuite, vous pourrez vous connecter à l'interface web depuis l'URL suivante :

https://<IP>:8007

Initialisation de disque et datastore

Nous allons initialiser un disque qui va accueillir notre datastore.

Pour cela, nous partons du principe que notre VM possède déjà d'un deuxième disque vierge dédié.

Rendez-vous sur l'interface web de PBS dans Administration > Storage / Disks :

image.png

Ici nous utiliserons le disque /dev/sdb

Commencez par créer une table de partition sur le disque en cliquant sur Initialize Disk with GPT après avoir sélectionné le disque :

image.png

Ensuite, rendez vous dans Directory et cliquez sur Create: Directory :

image.png

image.png

 Le disque est maintenant formaté, monté et un datastore a automatiquement été créé dessus.

image.png

Ajout du dépôt de sauvegarde sur PVE

Une fois que votre datastore est opérationnel sur le PBS, rendez vous sur l'interface web du PVE dans Datacenter > Storage :

image.png

Puis cliquez sur Add > Proxmox Backup Server et ajoutez toutes les informations requises :

image.png

Vous pouvez récupérer les Fingerprints de votre serveur PBS depuis le Dashboard l'interface web de PBS :

image.png

Création d'une tâche de sauvegarde

Pour l'exemple, nous allons créer une sauvegarde quotidienne de notre VM debian-test en nous rendant sur l'interface web de PVE dans le menu Datacenter > Backups puis cliquez sur Add

image.png

Dans l'onglet Retention vous pouvez configurer les sauvegardes qui seront conservées de manière journalière, hebdomadaire, mensuelle ou même annuelle :

image.png

Ici, la sauvegarde sera effectuée tous les jours à 4h du matin et nous conserverons 5 sauvegardes journalières, 1 hebdomadaire, 1 mensuelle et 1 annuelle. 

Une fois que vous aurez cliqué sur Create, votre tâche planifiée de sauvegarde sera programmée.

Vous pouvez cliquer sur Run Now pour lancer et tester votre sauvegarde.

Restaurer une sauvegarde

Si vous avez besoin de restaurer une sauvegarde, vous pouvez vous rendre sur l'interface web PVE, sélectionnez votre VM puis dans le menu Backup, cliquez sur Restore après avoir sélectionné votre sauvegarde :

image.png

[Proxmox] GNS3 Remote Server

Introduction

Ce tutoriel présente comment installer un Remote GNS3 Server dans une VM Proxmox.

Bien que Proxmox ne soit pas officiellement supporté pour GNS3, des membres de la communauté ont testés la solution et semble fonctionner de manière stable.

image.png

Source

Installation

Préparation de la VM

Tout d'abord, il va falloir préparer la machine virtuelle qui accueillera GNS3.

Pour cela, on clique sur Create VM :

image.png

On coche Do not use any media :

image.png

Dans la catégorie Disks, on supprime le disque en cliquant sur le logo de la corbeille :

image.png

Les options suivantes sont à configurer à votre guise et n'ont pas de spécificités propres à GNS3.

Import des disques virtuels

L'objectif va être de récupérer les disques virtuels pour la version VMware ESXI depuis le site officiel, pour les convertir en format QEMU (utilisé par Proxmox) et puis les attribuer à notre VM précédemment créée.

Pour commencer, récupérez le lien des disques au format ESXI sur le site officiel de GNS3 :

image.png

Ensuite, connectez-vous au shell de votre serveur Proxmox et exécutez les commandes suivantes :

cd /tmp
wget <LINK>

Remplacez <LINK> par le lien copié précédemment sur le site de GNS3.

unzip GNS3.VM.VMware.ESXI.*.zip
mkdir GNS3_OVA_Files
tar -xvf 'GNS3 VM.ova' -C GNS3_OVA_Files/
cd GNS3_OVA_Files/

Ensuite, convertissez les disques au format qcow2 (la commande peut mettre un moment à s'exécuter, soyez patient) :

qemu-img convert -f vmdk -O qcow2 ./GNS3_VM-disk1.vmdk ./GNS3_VM-disk1.qcow2
qemu-img convert -f vmdk -O qcow2 ./GNS3_VM-disk2.vmdk ./GNS3_VM-disk2.qcow2

 Puis importez les disques dans la VM :

qm importdisk <VM_ID> ./GNS3_VM-disk1.qcow2 local-lvm --format qcow2
qm importdisk <VM_ID> ./GNS3_VM-disk2.qcow2 local-lvm --format qcow2

 Le <VM_ID> doit être remplacé par le numéro (ID) de la VM et local-lvm est le nom du volume qui accueille les VMs par défaut, ce qui n'est peut-être pas votre cas et vous devriez le changer si c'est le cas.

Puis on peut tout nettoyer :

cd /tmp
rm -rf GNS3*

Enfin, on doit forcer la VM à utiliser le processeur en mode host avec cette commande sinon vous aurez des problèmes de virtualisation des équipements dans GNS3 :

qm set <VM_ID> --cpu host

Paramétrage des disques dans la VM

Depuis l'interface web de Proxmox, sélectionnez la VM GNS3 et rendez-vous dans Hardware puis faite un double clique sur Disk 0 :

image.png

Cliquez sur Add et faite de même avec le Disk 1 :

image.png

Maintenant, rendez-vous dans l'onglet Options et cliquez sur Boot Order :

image.png

Vous pouvez valider et démarrer la VM. Par défaut elle utilise DHCP pour obtenir une IP et écoute sur le port 80.

[Proxmox] Exporter une VM de VMWare à Proxmox

Introduction

Le passage d'une VM de VMware à Proxmox n'est pas supporté de manière graphique dans Proxmox mais quelques lignes de commande assez simples permettent de réaliser ces opérations.

image.png

Manuel

La première étape est de copier le fichier de disque de VMware (format vmdk) sur le serveur Proxmox.

Pour cela, plusieurs solutions s'offrent à vous mais personnellement j'aime bien utiliser SCP

scp <VM>.vmdk <USER>@<SRV_IP>

Une fois le fichier transféré, on peut créer une nouvelle VM sur Proxmox sans lui attribuer de nouveau disque.

Ensuite, utilisez la commande suivante pour convertir le fichier vmdk au format qcow2, pris en charge par QEMU et donc par Proxmox :

qemu-img convert -f vmdk <VM>.vmdk -O qcow2 /var/lib/vz/images/<VM_ID>/<VM_NAME>.qcow2

Enfin, sélectionnez votre VM depuis l'interface web de Proxmox et rendez-vous dans la catégorie Hardware pour importer le disque grâce au Disk actions.

[Proxmox] Créer un utilisateur PAM

Introduction

La procédure pour créer un utilisateur PAM n'est pas inuitive et nécessite quelques manipulations pour être effectuée.

Manuel

Tout d'abord ouvrez un shell sur le serveur Proxmox et créez votre utilisateur :

adduser <USER>

Ensuite, ajoutez le au groupe Proxmox :

pveum user add <USER>@pam

Et définissez ses droits :

pveum acl modify <PATH> --roles PVEAdmin --users <USER>@pam

Remplacez le <PATH> par la racine (/) ou un autre chemin.

[Proxmox] GOAD

Introduction

Pour mettre en place le GOAD, vous pouvez suivre la documentation officielle sauf que celle-ci et longue et fastidieuse. Je vous partage ici la solution à partir des images disques des trois machines.

image.png

Prérequis

La première étape consiste à extraire le .ova pour obtenir les vmdk et les convertir :

qemu-img convert -O qcow2 disk1.vmdk disk1.qcow2

Réitérez avec toutes les images disques.

Installation

Après avoir téléversé les images sur le noeud proxmox, créez les VMs avec les options suivantes :

Une fois que c'est fait, attachez le disque à la VM :

qm importdisk 505 disk1.qcow2 local-lvm

Puis activez le disque :

Démarrez les VMs !

[Proxmox] Template et cloud-init

Inroduction

Proxmox permet la création de templates qui vous permettent d'éviter l'installation de l'OS à chaque installation et d'enregistrer certaines configurations. Cloud-init va vous permettre d'enregistrer un nom d'utilisateur, un mot de passe, une clé SSH et une configuration IP depuis le menu de Proxmox ce qui est très pratique et automatisable.

Installation

Debian 12

Tout d'abord, lancez un shell sur votre noeud proxmox puis téléchargez l'image cloud-init de Debian 12 :

wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2

Créez la VM qui va servir de base pour votre template :

qm create <TEMPLATE_ID> --name "<TEMPLATE_NAME>" --memory 1024 --net0 virtio,bridge=vmbr0

Vous pouvez changer la taille de la RAM et le réseau à utiliser par défaut pour votre template.

Importez le disque cloud-init dans votre VM :

qm importdisk <TEMPLATE_ID> debian-12-genericcloud-amd64.qcow2 local-lvm

Modifiez les paramètre du disque pour le rendre fonctionnel :

qm set <TEMPLATE_ID> --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-900-disk-0

Mettre le disque en mode cloud-init :

qm set <TEMPLATE_ID> --ide2 local-lvm:cloudinit

Rendre le disque bootable :

qm set <TEMPLATE_ID> --boot c --bootdisk scsi0

Configurez l'affichage pour Proxmox :

qm set <TEMPLATE_ID> --serial0 socket --vga serial0

Puis templatisez votre VM :

qm template <TEMPLATE_ID>

Vous devriez voir apparaître votre template dans l'interface de Proxmox :

image.png

 Vous pouvez désormais cloner votre template pour créer des VMs.

Cloud-init

Vous pouvez modifier les paramètres de votre VM grâce à Cloud Init :

image.png

Vous pouvez définir :