Set-OPS-Public/docs/intrants-communs.md
Daniel Allaire e006dee693 Retirer 3 rôles legacy (serveur_sendmail, client_dns, client_ldap) + nettoyage
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>
2026-07-04 12:14:04 -04:00

5.7 KiB

Intrants communs de l'écosystème

Recensement des intrants communs : les valeurs partagées par tout l'écosystème (par opposition aux valeurs propres à un seul hôte). Objectif : les saisir une fois, depuis un endroit unique, puis les laisser se dériver ou se propager.

Concept lié : meta-classe.md (une définition instancie la flotte) et dimensionnement-ressources.md.

1. Recensement par domaine

A. Identité de l'instance — group_vars/<env>/all.yml

  • domaine_interne — domaine DNS interne (ex. chezlepro.internal). Keystone : zones DNS, FQDN, base DN LDAP, expéditeurs courriel, URL AC en dérivent.
  • chezlepro_timezone — fuseau (ex. America/Toronto).
  • setops_plan_dir — chemin du plan.

B. Réseau & nomenclature — plan/nomenclature.yml

  • supernet, cidr_hote, reservations, categories (VLAN/sous-réseau/passerelle), fonctions (catégorie + service).

C. Hyperviseur Proxmox — group_vars/proxmox.yml (+ proxmox.vault.yml)

  • proxmox_api_host, proxmox_api_user, proxmox_api_port, proxmox_validate_certs.
  • 🔒 proxmox_api_token_id, proxmox_api_token_secret (Vault).
  • Golden template : proxmox_clone_vmid_modele, proxmox_clone_source_nom.
  • Placement par défaut : proxmox_clone_noeud, proxmox_clone_stockage, proxmox_clone_pont, format, complet, timeout, disque, interface, démarrer.

D. Identité initiale des VM — group_vars/modeles_vm.yml, creer-vm

  • Clé publique SSH (cloud-init) — accès admin de toute la flotte.
  • Compte technique ansible (sudo_ansible_admin_user) + sudo NOPASSWD, ciuser.
  • Politiques SSH communes (port, password auth off, root login off, grace/auth tries).

E. Socle durci commun — group_vars/modeles_vm.yml

nftables baseline · fail2ban SSH · auditd · AppArmor · sysctl · unattended-upgrades · journald (rétention) · core_dumps · systemd_ssh_auto.

F. Endpoints des services centraux (les rôles client_* en dérivent)

  • DNS interne : plancher /etc/hosts (hosts_statiques) + PowerDNS + client_unbound (opt-in).
  • AC/PKI (client_pki_ca_url → infra-pki, provisioner).
  • IdM/LDAP : annuaire résolu par resoudre_annuaire (hôte + base DN dérivés du domaine).
  • Relais courriel (client_smtp_relais → edge-mta, MTA Postfix, port 25).
  • Métriques (node_exporter :9100).
  • Journaux (client_journal_loki_url → obs).
  • Temps (NTP) : implicite (pool Debian par défaut — aucun intrant configuré).

G. Dépôts APT tiers communs

  • Smallstep (step-cli) — client_pkiserveur_step_ca.
  • Grafana (alloy/loki/grafana) — client_journalserveur_loki/serveur_grafana.

H. Secrets Vault communs 🔒voûte unique group_vars/all/vault.yml

Tous les secrets de l'instance dans un seul fichier chiffré par environnement (inventories/<env>/group_vars/all/vault.yml), gabarit exemples/vault.exemple.yml. Un mot de passe, un endroit. Édité via ansible-vault edit (jamais par le GUI). proxmox_api_token_id/secret, vault_step_ca_password, vault_step_ca_fingerprint, vault_step_ca_provisioner_password, vault_openldap_admin, vault_ldap_sssd, vault_keycloak_admin, vault_postgresql_keycloak, vault_bd_keycloak, vault_forgejo_admin, vault_forgejo_secret_key, vault_forgejo_internal_token, vault_bd_forgejo, vault_grafana_admin, vault_redis, vault_bd_icingadb. Mot de passe du Vault lui-même : saisi au déploiement.

I. Exposition publique — plan/domaines.yml

domaines publics, edge, autorité DNS, FQDN exposés.

2. Classification proposée : constante vs défaut surchargeable

Proposition à valider. « Constante » = une seule valeur, pas de surcharge (diverger casserait le modèle). « Défaut surchargeable » = valeur globale qui ressurgit comme défaut là où l'intrant réapparaît (hôte / groupe / application).

Intrant Classe Surcharge où ?
domaine_interne Constante
Nomenclature (supernet, CIDR, catégories, fonctions) Constante — (le plan réseau est la loi)
Accès Proxmox (API host/user/port/token) Constante — (un seul cluster)
Golden template (vmid_modele, source_nom) Constante
Secrets Vault Constante 🔒 — (gérés à part, jamais en clair)
chezlepro_timezone Défaut par hôte (rare)
proxmox_clone_noeud / stockage / pont Défaut par hôte (serveurs.yml)
DNS internes (plancher /etc/hosts + PowerDNS + client_unbound) Défaut par hôte / groupe
Politiques durcissement (SSH, nftables, fail2ban, journald…) Défaut par hôte / groupe
Relais SMTP, TLS internes Défaut par hôte / groupe
ciuser, compte ansible Défaut rarement surchargé

3. Saisie unique dans le GUI (cible)

Un panneau « Intrants de base » dans le GUI :

  • édite les constantes et les défauts au même endroit ;
  • pour un défaut, la valeur globale apparaît pré-remplie (et signalée comme « héritée ») là où l'intrant réapparaît dans le plan, surchargeable sur place ;
  • les secrets ne sont jamais stockés en clair par le GUI (cf. §H) — il en gère au plus les références, l'édition réelle restant côté Vault.

Persistance : les fichiers existants (group_vars/all.yml, proxmox.yml, modeles_vm.yml, plan/nomenclature.yml). À détailler dans la note de conception de la fonctionnalité GUI.

4. Incohérences repérées (à corriger)

  • chezlepro_timezone défini en lab seulement, absent de production.
  • group_vars/serveur_debian.yml référencé (commentaire de prod all.yml) mais absent des deux environnements.