Set-OPS-Public/docs/dimensionnement-ressources.md
Daniel Allaire 5d30a3a608 Dimensionner les ressources VM depuis les logiciels hébergés
Les cœurs/RAM/disque d'une VM sont estimés depuis l'empreinte des rôles
hébergés (roles/<rôle>/meta/empreinte.yml) sommée au socle SE, au lieu
d'hériter des specs du golden template. Le générateur écrit
proxmox_coeurs/memoire/disque_taille ; le clonage les passe à Proxmox
(omit si absent → aucune régression). Override par hôte dans le plan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:07:04 -04:00

4.6 KiB
Raw Blame History

Dimensionnement dérivé des ressources VM

Ce document décrit comment Set-OPS estime les ressources d'une VM (cœurs, RAM, disque) à partir des propriétés des logiciels qu'elle héberge et du socle SE, plutôt que de laisser chaque clone hériter aveuglément des specs du golden template.

Décision actée le 2026-06-25 : extension assumée de la modélisation du plan de contrôle (cf. positionnement.md). C'est le prolongement naturel de la dérivation réseau (nomenclature.yml) — du dimensionnement, pas une fonction de type NetBox.

Principe

ressources(VM) = socle_SE  +  Σ empreinte(logiciel hébergé)  → marge → arrondi

Précédence (du plus fort au plus faible) :

  1. Valeur explicite par hôte dans serveurs.yml (coeurs / memoire / disque) — gagne toujours.
  2. Valeur dérivée (socle + empreintes + marge + arrondi) sinon.

Comme Ansible/Proxmox sont idempotents, ajuster une empreinte puis régénérer ne fait que recalculer la cible ; aucune dérive silencieuse.

Où vit chaque donnée

Donnée Emplacement Remarque
Empreinte d'un logiciel roles/<groupe>/meta/empreinte.yml Propriété du logiciel, voyage avec le rôle. Fichier pur données (parsable sans Jinja).
Groupes sans rôle dédié EMPREINTES_SANS_ROLE dans scripts/inventory_rules.py p. ex. serveur_web_frontal, serveur_web_dorsal.
Repli ultime EMPREINTE_DEFAUT groupe inconnu : empreinte minimale.
Socle SE SOCLE_SE dans inventory_rules.py coût de base Debian durci.
Override par hôte serveurs.yml (coeurs/memoire/disque) déjà supporté par le générateur (PLACEMENT).
Politique (marges, paliers, plafonds) constantes en tête de inventory_rules.py

Format d'une empreinte (roles/<rôle>/meta/empreinte.yml) :

setops_empreinte: { coeurs: 2, memoire_mo: 2048, disque_go: 20 }

Règles d'agrégation (valeurs en vigueur)

  • Socle SE : 1 cœur / 512 Mo / 8 Go.
  • RAM : (socle + Σ rôles) × 1.20, arrondie au palier 512 Mo, min 1024 Mo.
  • Disque : (socle + Σ rôles) × 1.25, arrondi au palier 5 Go, min 12 Go, émis sous la forme "<n>G".
  • Cœurs : max(socle, Σ rôles), entier, min 1, plafond 8 (CPU burstable : ni additif strict, ni marge).

Seuls les groupes de service de l'hôte (issus de applications.yml) entrent dans la somme. Le socle (serveur_debian/serveur_durci) et les groupes d'état sont exclus.

Chaîne technique

  1. scripts/inventory_rules.pyderiver_ressources(groupes_service, racine_roles) lit les empreintes et calcule.
  2. scripts/instancier.py — pour chaque hôte, écrit proxmox_coeurs, proxmox_memoire, proxmox_disque_taille dans l'inventaire généré (via setdefault : un override serveurs.yml prime).
  3. scripts/inventory_host.pyparametres-proxmox émet SETOPS_COEURS / SETOPS_MEMOIRE / SETOPS_DISQUE lus par make creer-vm.
  4. Makefile (creer-vmcloner-vm) relaie vers proxmox_clone_coeurs / proxmox_clone_memoire.
  5. playbooks/proxmox/cloner_vm_debian.yml — passe cores/memory à proxmox_kvm (avec omit si absent : aucune régression, on garde alors les specs du template).

Empreintes actuelles

Rôle cœurs RAM (Mo) disque (Go)
serveur_step_ca 1 256 2
serveur_powerdns 1 512 2
serveur_sendmail 1 512 5
serveur_nginx 1 512 3
serveur_openldap 1 512 3
serveur_keycloak 2 1536 5
serveur_postgresql 2 2048 20
serveur_redis 1 512 2
serveur_forgejo 1 1024 20
serveur_prometheus 1 1024 20
serveur_loki 1 1024 20
serveur_grafana 1 512 2
serveur_icinga 2 1024 10
serveur_web_frontal (repli) 1 512 5
serveur_web_dorsal (repli) 1 1024 10

Ajuster

  • Une empreinte de logiciel : éditer roles/<rôle>/meta/empreinte.yml.
  • Un hôte précis : poser coeurs/memoire/disque sur le serveur dans serveurs.yml (l'override prime sur la dérivation).
  • La politique (marges, paliers, socle, plafond) : constantes en tête de inventory_rules.py.

Puis : make instancier (voir le diff), make instancier-appliquer (FORCE=1 si changement intentionnel).

Limite connue

Les ressources s'appliquent à la création de la VM (clonage). Modifier une empreinte n'ajuste pas automatiquement une VM déjà existante : il faut un re-clonage ou un redimensionnement Proxmox manuel. Le plan, lui, reste la source de vérité et se régénère à volonté.