Supprimés (supersédés / hors-conception) : serveur_sendmail (→ Postfix), client_dns (→ plancher + client_unbound), client_ldap (login LDAP OS, hors design). Rôles + playbooks de groupe retirés. Nettoyage des références : - dependances-groupes.yml : entrées client_dns/client_ldap retirées + entrées mortes des scaffoldings (nextcloud/collabora/client_supervision) ; deps périmées corrigées (client_smtp → serveur_postfix ; serveur_keycloak → serveur_postgresql, la raison parlait à tort de Nextcloud). - 6 modèles d'exemple : app mail serveur_sendmail → serveur_postfix. - README, AGENTS : listes/glossaire nettoyés. - catalogue-services : listes, tables, roadmap ; note « rôles retirés ». - nomenclature-vm : infra-mail-01 → serveur_dovecot (était faux). - courriel-conception, dns-interne (re-ciblé client_unbound), pouvoirs, intrants, READMEs (client_smtp/forgejo/openldap/unbound). ansible-lint : 0 échec (366 fichiers). instancier OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.6 KiB
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) :
- Valeur explicite par hôte dans
serveurs.yml(coeurs/memoire/disque) — gagne toujours. - 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
scripts/inventory_rules.py—deriver_ressources(groupes_service, racine_roles)lit les empreintes et calcule.scripts/instancier.py— pour chaque hôte, écritproxmox_coeurs,proxmox_memoire,proxmox_disque_tailledans l'inventaire généré (viasetdefault: un overrideserveurs.ymlprime).scripts/inventory_host.py—parametres-proxmoxémetSETOPS_COEURS/SETOPS_MEMOIRE/SETOPS_DISQUElus parmake creer-vm.Makefile(creer-vm→cloner-vm) relaie versproxmox_clone_coeurs/proxmox_clone_memoire.playbooks/proxmox/cloner_vm_debian.yml— passecores/memoryàproxmox_kvm(avecomitsi 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_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/disquesur le serveur dansserveurs.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é.