[!attention]
Dans tout le TD, les lettres "XX" seront à remplacer par votre numéro de binome sur deux chiffres (ex : pour le groupe 3, "XX" devient "03")
Les lettres "YYY" sont à remplacer par la valeur de l'ip correspondante dans le contexte. Elles correspondent à des ip distribuées par le serveur DHCP que je ne peux pas anticiper.

Partie 0 : Connexion aux machines

Rendez vous sur https://dcp-vcsa.utt.fr
Utilisez les identifiants suivant pour vous connecter :
- id : gs16proxmox@dcp.local
- mdp : voir au tableau

Une fois connecté, rendez vous sur la vue "VM" (2ème onglet dans la partie gauche de l'interface)
Dépliez l'arborescence jusqu'à arriver aux VM puis cliquez sur celle correspondant à votre numéro de binome "tp-gs16-proxmox-XX"
Démarrez la VM avec le bouton vert "play" situé en haut à droite du nom de la VM.
Cliquez ensuite sur "Launch web console"
Vous êtes désormais connecté à l'interface de votre VM, comme si vous aviez un écran branché directement sur un serveur physique sur lequel vous avez booté sur une clé usb d'installation proxmox.

Partie 1 : Installation proxmox

1.a : Installation

  • Choisir le mode graphique
  • Définir le password comme "gs16adminXX"
  • Proxmox refuse l'adresse mail d'exemple fournie mais vous pouvez simplement ajouter une lettre quelque part pour que ça passe
  • Hostname (FQDN) : pveXX.gs16.local
  • IP (CIDR) : donnée par le DHCP
  • Gateway + DNS : données par le DHCP

Rendez vous sur l'interface admin de votre nouveau proxmox (10.23.13.YYY:8006)

  • user : root
  • password : gs16adminXX
  • Realm : Linux PAM

1.b : Dépots + Mise à jour

Dans l'onglet pveXX aller dans "Updates" > "Repositories"
Cliquez sur les 2 dépots "entreprise" puis sur "disable".
Une fois les 2 désactivés, cliquez sur "add" puis sélectionnez le dépot "No-Subscription", validez avec "Add".

  • Le réseau n’a pas l’air accessible depuis les proxmox, continuez sans faire les mises à jour.

Allez sur l'onglet "Updates" et utiliser les boutons "Refresh" pour mettre à jour la liste des paquets puis "Upgrade" pour lancer les mises à jour.
Valider le lancement des maj dans le terminal qui s'ouvre.
Vous pouvez ensuite redémarrer votre pveXX puis continuer.

1.c : Ajout du depot d'images ISO

Dans "Datacenter" > "Storage" : Ajouter un stockage NFS
ID : isos
Server : dcp-tpnas.utt.fr
Export : le seul proposé (/mnt/Pool01/gs16-iso)
Content : sélectionner "Image ISO" et déselectionner "Image disque"

Partie 2 : Création d'une VM utilisant Slax

Lors de la configuration de la nouvelle VM, choisissez l'os "slax" dans la liste des ISO disponibles sur le partage NFS

Un fois la vm démarée, rendez vous sur l'interface de celle-ci
Commencez par un clic droit sur le bureau pour définir un layout de clavier qui vous convient.

Donnez lui du réseau :

vi /etc/network/interfaces

Insérer en fin de fichier ces lignes :

auto ens18
iface ens18 inet dhcp

Redémarrez le service réseau :

systemctl restart networking

Vous pouvez vérifier la configuration avec ces commandes :

ip a  
route -n
cat /etc/resolv.conf
ping google.fr

Si vous voulez activer le ssh sur cette VM : Changez le mot de passe root :

passwd
systemctl start ssh

Pour vérifier que la machine est bien accessible :

nc -l 443

puis sur une autre machine

nc -zvn 10.23.13.YYY 443

Partie 3 : Gestion des utilisateurs

Utilisez la documentation proxmox pour remplir les objectifs.

2.a : Créer un utilisateur pour une vm dédiée

Contexte :
Vous êtes administrateur d'une infrastructure Proxmox qui héberge une VM appelée "Comptabilité". Le service comptable a besoin d'accéder à cette VM pour son travail, mais ne doit pas avoir accès à d'autres ressources ni aux configurations globales du cluster.

1-Créez une VM appelée "Comptabilite"
- Donnez lui un ID unique
- Utilisez l'OS "slax" dispo sur le partage NFS configuré plus haut

2-Créez un utilisateur "comptable" dans proxmox
- Utilisez le "Realm" : "Proxmox VE"
- Mettez un mot de passe simple comme "comptable" (parcequ’on est en tp, ne faites jamais ça en prod par pitié) 3-Créez un rôle personnalisé :
- Pout acceder à la console de la VM
- Peut démarrer et arrêterla VM
- Ne peut pas voir ou intéragir avec d'autres VMs ou ressources.
- Ne peut pas modifier la configuration de la VM ou du cluster.

4-Attribuez ce rôle à l'utilisateur comptable, mais uniquement sur la VM "comptabilité".

5- Testez la connexion avec l'utilisateur comptable et vérifiez qu'il a uniquement les persmissions voulues.

2.b : Gestion multi-utilisateurs avec permissions distinces

Contexte :
Votre infra proxmox héberge plusieurs VM :
- VM-Dev : utilisée par l'équipe dev pour des tests
- VM-Comptabilite : pour les comptables

Vous devez permettre à :
- dev1 d'avoir un accès complet à la VM "VM-Dev"
- comptable d'avoir un accès restreint à la VM "VM-Comptabilite"

Les deux utilisateurs ne doivent pas voir ou interagir avec les ressources qui ne leur appartiennent pas.

  • Créez les deux VM demandées dans le contexte
  • Créez les deux utilisateurs
  • Créez les rôles adaptés
  • Associez le tout pour répondre au besoin.

Puis testez chaque utilisateur pour vous assurer que :
- dev1 a un contrôle total sur "VM-Dev", mais ne voit pas "VM-Comptabilite".
- comptable peut interagir avec "VM-Comptabilite", mais ne voit pas "VM-Dev".

2.c : Création d'un utilisateur avec tous les droits sauf accès au shell

Contexte :
Vous avez un administrateur junior ou un technicien qui doit pouvoir gérer l’infrastructure Proxmox de manière autonome, mais sans accéder directement au shell root (par mesure de sécurité ou de contrôle). Cet utilisateur doit pouvoir effectuer toutes les actions disponibles via l’interface web Proxmox, sauf les tâches nécessitant un accès direct au shell

  • Créez un utilisateur "admin-tech"
  • Attribuez lui tous les droits nécessaires pour gérer les ressources, comme la création et la gestion des VMs, le stockage, les sauvegardes, etc.
  • Empêcher explicitement l'accès au shell ou toute action qui nécessite des privilèges en dehors de l'interface web.

Testez en vous connectant avec cet utilisateur.

Partie 4 : Conteneurs LXC

3.a : Télécharger une première image

  • Mettez à jour les images avec pveam
  • Téléchargez l'image :
  • pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.zst

3.b : Création et démarrage d'un conteneur non privilégié

  • Créez un conteneur nommé "monconteneur" à l'aide de l'image téléchargée
  • Démarrez le conteneur et vérifiez son état
  • Connectez vous au conteneur et explorez son contenu
  • Dans le conteneur, trouver et utiliser le fichier os-release pour vérifier la version de l'OS installée

3.c : Configuration réseau et attribution d'une ip

  • Attribuez une adresse IP statique à monconteneur
  • Redémarrez le conteneur
  • Vérifiez son ip directement depuis le conteneur

3.d : Montage d'un volume partagé

  • Créez un répertoire sur l'hôte (pveXX) pour stocker des fichiers partagés et y placer un fichier txt contenant "Created from host"
  • Monter ce volume dans le conteneur
  • Redémarrez le conteneur et vérifiez que le volume est accessible

3.e : Activation de l'autostart

  • Configurez le conteneur pour qu'il démarre automatiquement avec l'hôte
  • Redémarrez l'hôte
  • Vérifiez que le conteneur a bien démarré après le reboot de l'hôte

3.f : Installation d'un serveur web Nginx

  • Installez Nginx sur le conteneur
  • Configurez un serveur web nginx à partir d'un fichier de configuration se trouvant sur l'hôte (pveXX) accessible au conteneur via un volume partagé

3.g : Installation d'un serveur web Nginx sur un conteneur docker

Un conteneur LXC étant très proche du comportement d'une VM, il est possible de faire tourner les conteneur dockers dans un conteneur LXC.

  • Installez Docker dans le conteneur LXC en utilisant cette Doc
  • Lancer un conteneur Nginx avec docker

Partie 5 : Stockage

4.a : Utilisation de LVM

[!tip] Contexte LVM permet de dimensionner à la volée des volumes logiques pour du stockage fichier ou du stockage bloc.

4.a.1 : Création d'une VM

Créez une nouvelle VM slax avec un petit disque pour l'os et un second disque de 5G.

4.a.2 : Ajout d'un premier disque

À l'aide de https://doc.ubuntu-fr.org/lvm et vos recherches à coté :

  • Initialiser le second disque en tant que physical volume (PV)
  • Créez un volume group (VG)
  • Créez un volume logique (LV) utilisant le VG créé
  • Formatez le LV en ext4
  • Montez le LV dans un répertoire (par ex : /mnt/storage)
  • Vérifiez votre config

4.a.3 : Ajout d'un deuxième disque

On va désormais étendre le volume logique à la volée

  • Ajoutez un nouveau disque de 5G à la VM
  • Ajoutez ce nouveau disque comme PV
  • Ajoutez ce PV au VG existant
  • Étendre le LV
  • Redimensionner le système de fichiers
  • Confirmez que l'espace a bien été ajouté avec "df -h /mnt/storage"

4.a.4 : Réduction du volume logique (Facultatif)

Facultatif (et expérimental) :

  • Sauvegarder les données du dossier /mnt/storage : "tar -czf /tmp/storage-backup.tar.gz /mnt/storage"
  • Démontez le LV pour pouvoir réduire son système de fichiers
  • Réduisez le système de fichiers à une taille de 8G
  • Réduire le LV
  • Remonter le LV et vérifier le système de fichier (df)