#+TITLE: Cours de virtualisation avancée: /Proxmox/
#+OPTIONS: toc:nil date:nil author:nil reveal_single_file:t
#+LATEX_CLASS: article
#+LATEX_CLASS_OPTIONS: [12pt,a4paper]
#+LATEX_HEADER: \usepackage[utf8]{inputenc}
#+LATEX_HEADER: \usepackage[inkscapelatex=false]{svg}
#+LATEX_HEADER: \usepackage[sfdefault]{AlegreyaSans}
#+LATEX_HEADER: \usepackage{multicol}
#+LATEX_HEADER: \usepackage{minted}
#+LATEX_HEADER: \usepackage{float}
#+LATEX_HEADER: \usepackage{tikz}
#+LATEX_HEADER: \usetikzlibrary{positioning}
#+LATEX_HEADER: \renewcommand\listingscaption{Exemple de code}

#+REVEAL_THEME: white
#+REVEAL_INIT_OPTIONS: slideNumber:true
#+REVEAL_EXTRA_CSS: ../common/reveal_custom.css

* Parlons de déploiement (mais pas le vendredi)
[[file:./images/friday_deploy.gif]]

** Plusieurs solutions
*** Machines physiques
#+BEGIN_smallfont
Les applications sont déployées sur des machines physiques.

- ➕ Forte isolation des resources
- ➕ Sécurité accrue
- ➖ Laborieux à gérer
  - Un grand nombre de machines différentes
  - Surface d'attaque étendue
  - Beaucoup de travail pour rendre tolérant aux pannes
  - Peu efficace énergétiquement et économiquement
#+END_smallfont

#+BEGIN_note
Solution adaptée plutôt lorsque l'on a un petit nombre d'applications.
#+END_note

*** Machines virtuelles et hyperviseur
#+BEGIN_smallfont
Les applications sont déployées dans des machines virtuelles gérées par un hyperviseur.


- ➕ Isolation des ressources plus faible
- ➕ Meilleure flexibilité
- ➕ Meilleure efficacité énergétique et économique
- ➕ Gestion automatisable des pannes et de la charge
- ➖ Beaucoup de machines à administrer
#+END_smallfont

#+BEGIN_note
Solution adaptée à tout nombre d'applications.
#+END_note

*** Conteneurs et orchestrateur
#+BEGIN_smallfont
Les applications sont déployées dans des conteneurs qui sont gérés au sein d'un orchestrateur.

- ➕ Isolation des ressources plus faible
- ➕ Grande flexibilité
- ➕ Facilité d'automatisation
- ➕ Grande tolérance aux pannes (si correctement mis en place)
- ➕ Encore meilleure efficacité énergétique et économique
- ➖ Nécessite la maîtrise de l'orchestrateur en plus de compétences système
- ➖ Peut créer plus de problèmes si mauvaise mise en place ou mauvais choix
#+END_smallfont

#+BEGIN_note
Solution adaptée à tout nombre d'applications.
#+END_note


* Proxmox
#+ATTR_LATEX: :width 0.8\textwidth
[[file:./images/proxmox.png]]

** Un hyperviseur "/bare metal/"
- S’exécute directement sur le /hardware/
- Optimisé pour l'exécution de machines virtuelles
- *Pas comme /Virtual Box/*

* /Proxmox/
- Libre
- Basé sur /Debian/
- /KVM/ (machines virtuelles) et /LXC/ (conteneurs)
- Gestion via *terminal* ou *interface web*
- Orchestration, réplication, /cluster/
- Concurrent à /Hyper-V/ ou /ESXi/
- Gestion des sauvegardes

** Orchestration et mode /cluster/
- Gestion des réplications
- Gestion de la perte de machines
- Gestion des sauvegardes
  
** Machines virtuelles et conteneurs
*** Machine virtuelle
- Aussi appelé /VM/
- Embarque un système d'exploitation complet
- ➕ Isolation forte
- ➖ Lourd et nécessite plus de puissance

Les machines virtuelles sont souvent installées depuis un /ISO/, comme il serait fait pour une machine physique.

*** Conteneur
- Aussi appelé /CT/
- Embarque uniquement les fichiers nécessaires
- ➕ Plus léger
- ➖ Isolation plus faible

Les conteneurs sont installés depuis des /"Templates"/ qui possèdent des options de configuration.
Les /"Templates"/ sont des archives contenant un système de fichier.

* Note sur les /network bridges/
- Pont entre deux réseaux
- Comme un "/switch/ virtuel"
- Nécessaire pour permettre aux /VM/ et /CT/ l'accès au réseau

* Éléments de configuration
** Système
- Interfaces réseau virtuelles
- Pare-feu basique
- Gestion fine des permissions

** Machines virtuelles et conteneurs
- /CPU/ et mémoire vive
- Taille du (des) disque(s)
- Interfaces réseau
- Pare-feu basique

* L'interface
[[file:./images/pve_1.png]]

#+REVEAL: split

- *1*: Liste des ressources: machines, conteneurs, volumes de stockage
- *2*: Configuration de l'instance / du /cluster/
- *3*: Statut de l'instance /Proxmox/
- *4*: Boutons pour créer les machines
- *5*: Tâches en cours et historique

** Création d'une machine virtuelle (/VM/)
*** Onglet /"General"/
[[file:./images/vm_create_1.png]]

#+REVEAL: split

- /"Node"/: l'instance /Proxmox/ sur laquelle créer la /VM/
- /"VM ID"/: l'identifiant de la /VM/
- /"Name"/: le nom pour la /VM/
- /"Resource pool"/: la /pool/ de ressources à utiliser

*** Onglet /"OS"/
[[file:./images/vm_create_2.png]]

#+REVEAL: split

- /"Storage"/: l'espace de stockage où est stocké l'/ISO/
- /"ISO image"/: l'image /ISO/ à utiliser

*** Onglet /"Disks"/
[[file:./images/vm_create_3.png]]

#+REVEAL: split

- /"Storage"/: l'espace de stockage dans lequel sera stocké la /VM/
- /"Disk size"/: la taille du disque

*** Onglet /"CPU"/
[[file:./images/vm_create_4.png]]

#+REVEAL: split

- /"Sockets"/: le nombre de /CPU/ à virtualiser
- /"Cores"/: le nombre de cœurs par /CPU/ 
- /"Total cores"/: récapitulatif du nombre de cœurs qu'aura la /VM/

*** Onglet /"Memory"/
[[file:./images/vm_create_5.png]]

#+REVEAL: split

- /"Memory"/: la taille de la mémoire vive

*** Onglet /"Network"/
[[file:./images/vm_create_6.png]]

#+REVEAL: split

- /"Bridge"/: le pont réseau à utiliser

*** Onglet /"Confirm"/
[[file:./images/vm_create_7.png]]

#+REVEAL: split

Récapitule la configuration de la future machine virtuelle.

** Création d'un conteneur (/CT/)

Les onglets et options sont similaires à celles de la création d'une /VM/, avec quelques options en plus.

*** Onglet /"General"/
[[file:./images/ct_create_1.png]]

#+REVEAL: split

- /"Password"/ et /"Confirm password"/: mot de passe de l'utilisateur par défaut (souvent =root=)
- /"SSH public key"/: votre clef publique pour la connexion en /SSH/

*** Onglet /"Template"/
[[file:./images/ct_create_2.png]]

#+REVEAL: split

- /"Template"/: la /template/ à utiliser

*** Onglet /"Network"/
[[file:./images/ct_create_3.png]]

#+REVEAL: split

- /"IPv4/CIDR"/: l'adresse /IP/ qui sera assignée à l'interface réseau du conteneur
- /"Gateway"/: la passerelle réseau qui sera utilisée

** Notes à propos de la configuration
Vous pouvez modifier ces options à tout moment et les appliquer à la machine virtuelle ou au conteneur.


* Démonstration
[[file:./images/cat_keyboard.webp]]

* Pour aller plus loin
- Documentation /Proxmox/: =https://pve.proxmox.com/pve-docs/pve-admin-guide.html=
- Un autre guide: =https://www.it-connect.fr/comment-installer-proxmox-ve-7-0-et-creer-sa-premiere-vm/=
