From 6eb178598f5a1691e1b76b19bb002aa28d7d284b Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Sun, 5 Jul 2026 01:11:52 -0400 Subject: [PATCH] =?UTF-8?q?Mod=C3=A8les=20partiels=20rafra=C3=AEchis=20(so?= =?UTF-8?q?cle/identite/observabilite/forge)=20+=20presence-web=20flagg?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Réalignés sur le moule integral : 6 zones (numéros/VLAN cohérents), vmid_schema ip-miroir, fonctions éprouvées (data→data-sql, idm→id-ldap+id-sso, mon→sup), nouveaux intrants (fuseau_horaire/organisation/identite_realm). Prouvés (dérivation 9 chiffres + valider_serveurs). presence-web : marqué ASPIRATIONNEL (fonctions web-frontal/dorsal sans rôle réel) — honnêteté plutôt que faux-prêt. README général corrigé (état + intrants). Co-Authored-By: Claude Opus 4.8 --- exemples/modeles/README.md | 5 +- exemples/modeles/forge/README.md | 9 ++- .../inventories/production/group_vars/all.yml | 5 +- exemples/modeles/forge/plan/applications.yml | 29 +++------- exemples/modeles/forge/plan/bases-donnees.yml | 8 +-- exemples/modeles/forge/plan/domaines.yml | 7 +-- exemples/modeles/forge/plan/nomenclature.yml | 54 +++++------------ exemples/modeles/forge/plan/serveurs.yml | 24 ++------ exemples/modeles/identite/README.md | 8 ++- .../inventories/production/group_vars/all.yml | 5 +- .../modeles/identite/plan/applications.yml | 31 +++------- .../modeles/identite/plan/bases-donnees.yml | 8 +-- exemples/modeles/identite/plan/domaines.yml | 7 +-- .../modeles/identite/plan/nomenclature.yml | 55 ++++++------------ exemples/modeles/identite/plan/serveurs.yml | 25 +++----- exemples/modeles/observabilite/README.md | 9 ++- .../inventories/production/group_vars/all.yml | 5 +- .../observabilite/plan/applications.yml | 45 ++++---------- .../observabilite/plan/bases-donnees.yml | 8 +-- .../modeles/observabilite/plan/domaines.yml | 7 +-- .../observabilite/plan/nomenclature.yml | 58 ++++++------------- .../modeles/observabilite/plan/serveurs.yml | 28 +++------ exemples/modeles/presence-web/README.md | 16 ++--- exemples/modeles/socle/README.md | 9 ++- .../inventories/production/group_vars/all.yml | 5 +- exemples/modeles/socle/plan/applications.yml | 16 ++--- exemples/modeles/socle/plan/bases-donnees.yml | 1 + exemples/modeles/socle/plan/domaines.yml | 7 +-- exemples/modeles/socle/plan/nomenclature.yml | 35 +++++------ exemples/modeles/socle/plan/serveurs.yml | 16 ++--- 30 files changed, 184 insertions(+), 361 deletions(-) diff --git a/exemples/modeles/README.md b/exemples/modeles/README.md index 06908ad..2338558 100644 --- a/exemples/modeles/README.md +++ b/exemples/modeles/README.md @@ -6,7 +6,8 @@ offre, le renseigne à ses couleurs (ou celles de son client), et instancie. ## Utilisation ```bash cp -r exemples/modeles/ ../mon-instance -# éditer mon-instance : domaine_interne, domaines publics, dimensionnement +# éditer mon-instance : intrants (domaine_interne, fuseau_horaire, organisation, +# identite_realm), plan/nomenclature.yml (index de fédération + zones), domaines cd ln -s ../mon-instance instance # ou export SETOPS_INSTANCE=../mon-instance make instancier-appliquer FORCE=1 # première génération de l'inventaire @@ -19,7 +20,7 @@ courriel) et ajoute des **modules** selon l'offre. | Modèle | = socle + | État | | --- | --- | --- | | `socle` | (rien) | ✅ | -| **`presence-web`** | web (frontal+dorsal) + données (PostgreSQL/Redis) | ✅ | +| `presence-web` | web (frontal+dorsal) + données | ⚠️ rôles web à construire | | `forge` | Forgejo + données | ✅ | | `identite` | LDAP + Keycloak (SSO) | ✅ | | `observabilite` | Prometheus/Loki/Grafana + Icinga | ✅ | diff --git a/exemples/modeles/forge/README.md b/exemples/modeles/forge/README.md index 692ed96..d214cbd 100644 --- a/exemples/modeles/forge/README.md +++ b/exemples/modeles/forge/README.md @@ -1,5 +1,8 @@ -# Modele : forge +# Modèle : forge -Forge Git souveraine : socle + Forgejo + PostgreSQL. +Base + données + **forge git** — **6 VM** : socle infra + PostgreSQL/Redis + +Forgejo (dépôts git, exposé via l'edge). -6 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). +Zones : Frontière (16) · Données (18) · Services-infra (19) · Applications (21). +SSO non inclus — ajouter le modèle `identite` pour « Se connecter avec ... ». +VMID `ip-miroir`. Copier vers `OPS-`, adapter `index`/domaine/intrants. diff --git a/exemples/modeles/forge/inventories/production/group_vars/all.yml b/exemples/modeles/forge/inventories/production/group_vars/all.yml index 92ed206..d96622e 100644 --- a/exemples/modeles/forge/inventories/production/group_vars/all.yml +++ b/exemples/modeles/forge/inventories/production/group_vars/all.yml @@ -1,3 +1,6 @@ --- -domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +domaine_interne: "exemple.internal" +fuseau_horaire: "America/Toronto" +organisation: "Exemple" +identite_realm: "exemple" setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/forge/plan/applications.yml b/exemples/modeles/forge/plan/applications.yml index db16b35..73866bf 100644 --- a/exemples/modeles/forge/plan/applications.yml +++ b/exemples/modeles/forge/plan/applications.yml @@ -1,24 +1,9 @@ --- applications: - step_ca: - groupe: serveur_step_ca - hote: infra-pki-01 - nginx: - groupe: serveur_nginx - hote: infra-edge-01 - sendmail: - groupe: serveur_postfix - hote: infra-mail-01 - powerdns: - groupe: serveur_powerdns - hote: infra-dns-01 - postgresql: - groupe: serveur_postgresql - hote: data-01 - port: 5432 - forgejo: - groupe: serveur_forgejo - hote: forge-01 - port: 3000 - expose: - - forge.exemple.ca + step_ca: { groupe: serveur_step_ca, hote: infra-pki-01 } + nginx: { groupe: serveur_nginx, hote: infra-edge-01 } + powerdns: { groupe: serveur_powerdns, hote: infra-dns-01 } + dovecot: { groupe: serveur_dovecot, hote: infra-mail-01 } + postgresql: { groupe: serveur_postgresql, hote: data-sql-01 } + redis: { groupe: serveur_redis, hote: data-sql-01 } + forgejo: { groupe: serveur_forgejo, hote: forge-01, port: 3000, expose: [forge.exemple.internal] } diff --git a/exemples/modeles/forge/plan/bases-donnees.yml b/exemples/modeles/forge/plan/bases-donnees.yml index 832512e..1f5dd7e 100644 --- a/exemples/modeles/forge/plan/bases-donnees.yml +++ b/exemples/modeles/forge/plan/bases-donnees.yml @@ -1,13 +1,9 @@ --- serveurs_bd: - pg-principal: - type: postgres - hote: 10.10.13.11 - port: 5432 - groupe: serveur_postgresql + sql-01: { type: postgres, hote: data-sql-01, port: 5432, groupe: serveur_postgresql } bases_donnees: forgejo: - serveur: pg-principal + serveur: sql-01 base: forgejo proprietaire: forgejo secret: vault_bd_forgejo diff --git a/exemples/modeles/forge/plan/domaines.yml b/exemples/modeles/forge/plan/domaines.yml index 367ea72..a0ff751 100644 --- a/exemples/modeles/forge/plan/domaines.yml +++ b/exemples/modeles/forge/plan/domaines.yml @@ -1,7 +1,4 @@ --- domaines_publics: - exemple.ca: - autorite: primaire-cache - edge: serveur_nginx - secondaires: [] - dnssec: false + exemple.ca: { autorite: primaire-cache, edge: serveur_nginx, secondaires: [], dnssec: false } + exemple.internal: { autorite: interne, edge: serveur_nginx, secondaires: [], dnssec: false } diff --git a/exemples/modeles/forge/plan/nomenclature.yml b/exemples/modeles/forge/plan/nomenclature.yml index 7fe9d89..a619164 100644 --- a/exemples/modeles/forge/plan/nomenclature.yml +++ b/exemples/modeles/forge/plan/nomenclature.yml @@ -1,42 +1,20 @@ --- -supernet: 10.10.0.0/16 +# MODÈLE « forge » — base + données + forge git (6 VM) : Forgejo. +# index : ⚠️ REMPLACER par l'index unique du tenant. +index: 1 +supernet: 10.11.0.0/16 +vmid_schema: ip-miroir cidr_hote: 24 -reservations: - passerelle: 1 - reserve_min: 2 - reserve_max: 9 +reservations: { passerelle: 1, reserve_min: 2, reserve_max: 9 } categories: - 1: - libelle: Fondations - vlan: 11 - sous_reseau: 10.10.11.0/24 - passerelle: 10.10.11.1 - 3: - libelle: Donnees - vlan: 13 - sous_reseau: 10.10.13.0/24 - passerelle: 10.10.13.1 - 5: - libelle: Applications - vlan: 15 - sous_reseau: 10.10.15.0/24 - passerelle: 10.10.15.1 + 1: { libelle: Frontiere, vlan: 16, sous_reseau: 10.11.16.0/24, passerelle: 10.11.16.1 } + 3: { libelle: Donnees, vlan: 18, sous_reseau: 10.11.18.0/24, passerelle: 10.11.18.1 } + 4: { libelle: Services-infra, vlan: 19, sous_reseau: 10.11.19.0/24, passerelle: 10.11.19.1 } + 6: { libelle: Applications, vlan: 21, sous_reseau: 10.11.21.0/24, passerelle: 10.11.21.1 } fonctions: - data: - categorie: 3 - service: 1 - forge: - categorie: 5 - service: 1 - infra-dns: - categorie: 1 - service: 4 - infra-edge: - categorie: 1 - service: 2 - infra-mail: - categorie: 1 - service: 3 - infra-pki: - categorie: 1 - service: 1 + infra-edge: { categorie: 1, service: 1 } + data-sql: { categorie: 3, service: 1 } + infra-dns: { categorie: 4, service: 1 } + infra-pki: { categorie: 4, service: 2 } + infra-mail: { categorie: 4, service: 3 } + forge: { categorie: 6, service: 1 } diff --git a/exemples/modeles/forge/plan/serveurs.yml b/exemples/modeles/forge/plan/serveurs.yml index a27aa02..9e87756 100644 --- a/exemples/modeles/forge/plan/serveurs.yml +++ b/exemples/modeles/forge/plan/serveurs.yml @@ -1,20 +1,8 @@ --- serveurs: - infra-pki-01: - fonction: infra-pki - etat: planifie - infra-edge-01: - fonction: infra-edge - etat: planifie - infra-mail-01: - fonction: infra-mail - etat: planifie - infra-dns-01: - fonction: infra-dns - etat: planifie - data-01: - fonction: data - etat: planifie - forge-01: - fonction: forge - etat: planifie + infra-pki-01: { fonction: infra-pki, etat: planifie, disque: 32G, integrations: [client_backup] } + infra-edge-01: { fonction: infra-edge, etat: planifie, integrations: [client_pki] } + infra-mail-01: { fonction: infra-mail, etat: planifie, integrations: [client_pki, client_backup] } + infra-dns-01: { fonction: infra-dns, etat: planifie, disque: 40G, integrations: [client_pki] } + data-sql-01: { fonction: data-sql, etat: planifie, integrations: [client_pki, client_unbound, client_backup, client_metrique, client_journal, client_smtp] } + forge-01: { fonction: forge, etat: planifie, integrations: [client_pki, client_backup, client_metrique, client_journal, client_smtp] } diff --git a/exemples/modeles/identite/README.md b/exemples/modeles/identite/README.md index 862bd44..27ec9ed 100644 --- a/exemples/modeles/identite/README.md +++ b/exemples/modeles/identite/README.md @@ -1,5 +1,7 @@ -# Modele : identite +# Modèle : identite -Identite centralisee : socle + LDAP + Keycloak (SSO) + PostgreSQL. +Base + données + **identité** — **7 VM** : socle infra + PostgreSQL/Redis + +OpenLDAP (annuaire, source de vérité) + Keycloak (SSO/OIDC, exposé via l'edge). -6 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). +Zones : Frontière (16) · Identité (17) · Données (18) · Services-infra (19). +VMID `ip-miroir`. Copier vers `OPS-`, adapter `index`/domaine/intrants. diff --git a/exemples/modeles/identite/inventories/production/group_vars/all.yml b/exemples/modeles/identite/inventories/production/group_vars/all.yml index 92ed206..d96622e 100644 --- a/exemples/modeles/identite/inventories/production/group_vars/all.yml +++ b/exemples/modeles/identite/inventories/production/group_vars/all.yml @@ -1,3 +1,6 @@ --- -domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +domaine_interne: "exemple.internal" +fuseau_horaire: "America/Toronto" +organisation: "Exemple" +identite_realm: "exemple" setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/identite/plan/applications.yml b/exemples/modeles/identite/plan/applications.yml index 804cbf9..e3c885d 100644 --- a/exemples/modeles/identite/plan/applications.yml +++ b/exemples/modeles/identite/plan/applications.yml @@ -1,27 +1,14 @@ --- applications: - step_ca: - groupe: serveur_step_ca - hote: infra-pki-01 - nginx: - groupe: serveur_nginx - hote: infra-edge-01 - sendmail: - groupe: serveur_postfix - hote: infra-mail-01 - powerdns: - groupe: serveur_powerdns - hote: infra-dns-01 - postgresql: - groupe: serveur_postgresql - hote: data-01 - port: 5432 - openldap: - groupe: serveur_openldap - hote: idm-01 + step_ca: { groupe: serveur_step_ca, hote: infra-pki-01 } + nginx: { groupe: serveur_nginx, hote: infra-edge-01 } + powerdns: { groupe: serveur_powerdns, hote: infra-dns-01 } + dovecot: { groupe: serveur_dovecot, hote: infra-mail-01 } + openldap: { groupe: serveur_openldap, hote: id-ldap-01 } + postgresql: { groupe: serveur_postgresql, hote: data-sql-01 } + redis: { groupe: serveur_redis, hote: data-sql-01 } keycloak: groupe: serveur_keycloak - hote: idm-01 + hote: id-sso-01 port: 8080 - expose: - - auth.exemple.ca + expose: [keycloak.exemple.internal] diff --git a/exemples/modeles/identite/plan/bases-donnees.yml b/exemples/modeles/identite/plan/bases-donnees.yml index 4abebf3..cc6bf4a 100644 --- a/exemples/modeles/identite/plan/bases-donnees.yml +++ b/exemples/modeles/identite/plan/bases-donnees.yml @@ -1,13 +1,9 @@ --- serveurs_bd: - pg-principal: - type: postgres - hote: 10.10.13.11 - port: 5432 - groupe: serveur_postgresql + sql-01: { type: postgres, hote: data-sql-01, port: 5432, groupe: serveur_postgresql } bases_donnees: keycloak: - serveur: pg-principal + serveur: sql-01 base: keycloak proprietaire: keycloak secret: vault_bd_keycloak diff --git a/exemples/modeles/identite/plan/domaines.yml b/exemples/modeles/identite/plan/domaines.yml index 367ea72..a0ff751 100644 --- a/exemples/modeles/identite/plan/domaines.yml +++ b/exemples/modeles/identite/plan/domaines.yml @@ -1,7 +1,4 @@ --- domaines_publics: - exemple.ca: - autorite: primaire-cache - edge: serveur_nginx - secondaires: [] - dnssec: false + exemple.ca: { autorite: primaire-cache, edge: serveur_nginx, secondaires: [], dnssec: false } + exemple.internal: { autorite: interne, edge: serveur_nginx, secondaires: [], dnssec: false } diff --git a/exemples/modeles/identite/plan/nomenclature.yml b/exemples/modeles/identite/plan/nomenclature.yml index 8c0bd06..9d61239 100644 --- a/exemples/modeles/identite/plan/nomenclature.yml +++ b/exemples/modeles/identite/plan/nomenclature.yml @@ -1,42 +1,21 @@ --- -supernet: 10.10.0.0/16 +# MODÈLE « identite » — base + données + identité (7 VM) : OpenLDAP + Keycloak. +# index : ⚠️ REMPLACER par l'index unique du tenant. +index: 1 +supernet: 10.11.0.0/16 +vmid_schema: ip-miroir cidr_hote: 24 -reservations: - passerelle: 1 - reserve_min: 2 - reserve_max: 9 +reservations: { passerelle: 1, reserve_min: 2, reserve_max: 9 } categories: - 1: - libelle: Fondations - vlan: 11 - sous_reseau: 10.10.11.0/24 - passerelle: 10.10.11.1 - 2: - libelle: Identite - vlan: 12 - sous_reseau: 10.10.12.0/24 - passerelle: 10.10.12.1 - 3: - libelle: Donnees - vlan: 13 - sous_reseau: 10.10.13.0/24 - passerelle: 10.10.13.1 + 1: { libelle: Frontiere, vlan: 16, sous_reseau: 10.11.16.0/24, passerelle: 10.11.16.1 } + 2: { libelle: Identite, vlan: 17, sous_reseau: 10.11.17.0/24, passerelle: 10.11.17.1 } + 3: { libelle: Donnees, vlan: 18, sous_reseau: 10.11.18.0/24, passerelle: 10.11.18.1 } + 4: { libelle: Services-infra, vlan: 19, sous_reseau: 10.11.19.0/24, passerelle: 10.11.19.1 } fonctions: - data: - categorie: 3 - service: 1 - idm: - categorie: 2 - service: 1 - infra-dns: - categorie: 1 - service: 4 - infra-edge: - categorie: 1 - service: 2 - infra-mail: - categorie: 1 - service: 3 - infra-pki: - categorie: 1 - service: 1 + infra-edge: { categorie: 1, service: 1 } + id-ldap: { categorie: 2, service: 1 } + id-sso: { categorie: 2, service: 2 } + data-sql: { categorie: 3, service: 1 } + infra-dns: { categorie: 4, service: 1 } + infra-pki: { categorie: 4, service: 2 } + infra-mail: { categorie: 4, service: 3 } diff --git a/exemples/modeles/identite/plan/serveurs.yml b/exemples/modeles/identite/plan/serveurs.yml index 2dee340..5788937 100644 --- a/exemples/modeles/identite/plan/serveurs.yml +++ b/exemples/modeles/identite/plan/serveurs.yml @@ -1,20 +1,9 @@ --- serveurs: - infra-pki-01: - fonction: infra-pki - etat: planifie - infra-edge-01: - fonction: infra-edge - etat: planifie - infra-mail-01: - fonction: infra-mail - etat: planifie - infra-dns-01: - fonction: infra-dns - etat: planifie - data-01: - fonction: data - etat: planifie - idm-01: - fonction: idm - etat: planifie + infra-pki-01: { fonction: infra-pki, etat: planifie, disque: 32G, integrations: [client_backup] } + infra-edge-01: { fonction: infra-edge, etat: planifie, integrations: [client_pki] } + infra-mail-01: { fonction: infra-mail, etat: planifie, integrations: [client_pki, client_backup] } + infra-dns-01: { fonction: infra-dns, etat: planifie, disque: 40G, integrations: [client_pki] } + id-ldap-01: { fonction: id-ldap, etat: planifie, integrations: [client_pki, client_backup, client_metrique, client_journal, client_smtp] } + id-sso-01: { fonction: id-sso, etat: planifie, integrations: [client_pki] } + data-sql-01: { fonction: data-sql, etat: planifie, integrations: [client_pki, client_unbound, client_backup, client_metrique, client_journal, client_smtp] } diff --git a/exemples/modeles/observabilite/README.md b/exemples/modeles/observabilite/README.md index 91c0434..c00ad51 100644 --- a/exemples/modeles/observabilite/README.md +++ b/exemples/modeles/observabilite/README.md @@ -1,5 +1,8 @@ -# Modele : observabilite +# Modèle : observabilite -Observabilite & supervision : socle + Prometheus/Loki/Grafana + Icinga. +Base + données + **observabilité/supervision** — **7 VM** : socle infra + PostgreSQL/ +Redis + Prometheus/Loki/Grafana (métriques & logs) + Icinga/BPM (supervision stratégique). -7 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). +Zones : Frontière (16) · Données (18) · Services-infra (19) · Observabilité (20). +SSO non inclus (auth locale) — ajouter le modèle `identite` pour fédérer. +VMID `ip-miroir`. Copier vers `OPS-`, adapter `index`/domaine/intrants. diff --git a/exemples/modeles/observabilite/inventories/production/group_vars/all.yml b/exemples/modeles/observabilite/inventories/production/group_vars/all.yml index 92ed206..d96622e 100644 --- a/exemples/modeles/observabilite/inventories/production/group_vars/all.yml +++ b/exemples/modeles/observabilite/inventories/production/group_vars/all.yml @@ -1,3 +1,6 @@ --- -domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +domaine_interne: "exemple.internal" +fuseau_horaire: "America/Toronto" +organisation: "Exemple" +identite_realm: "exemple" setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/observabilite/plan/applications.yml b/exemples/modeles/observabilite/plan/applications.yml index dfe3625..073d4e5 100644 --- a/exemples/modeles/observabilite/plan/applications.yml +++ b/exemples/modeles/observabilite/plan/applications.yml @@ -1,36 +1,13 @@ --- applications: - step_ca: - groupe: serveur_step_ca - hote: infra-pki-01 - nginx: - groupe: serveur_nginx - hote: infra-edge-01 - sendmail: - groupe: serveur_postfix - hote: infra-mail-01 - powerdns: - groupe: serveur_powerdns - hote: infra-dns-01 - postgresql: - groupe: serveur_postgresql - hote: data-01 - port: 5432 - redis: - groupe: serveur_redis - hote: data-01 - prometheus: - groupe: serveur_prometheus - hote: obs-01 - loki: - groupe: serveur_loki - hote: obs-01 - grafana: - groupe: serveur_grafana - hote: obs-01 - port: 3000 - expose: - - grafana.exemple.ca - icinga: - groupe: serveur_icinga - hote: mon-01 + step_ca: { groupe: serveur_step_ca, hote: infra-pki-01 } + nginx: { groupe: serveur_nginx, hote: infra-edge-01 } + powerdns: { groupe: serveur_powerdns, hote: infra-dns-01 } + dovecot: { groupe: serveur_dovecot, hote: infra-mail-01 } + postgresql: { groupe: serveur_postgresql, hote: data-sql-01 } + redis: { groupe: serveur_redis, hote: data-sql-01 } + loki: { groupe: serveur_loki, hote: obs-01 } + prometheus: { groupe: serveur_prometheus, hote: obs-01 } + grafana: { groupe: serveur_grafana, hote: obs-01, port: 3000, expose: [grafana.exemple.internal] } + icinga: { groupe: serveur_icinga, hote: sup-01 } + icingaweb2: { groupe: serveur_icingaweb2, hote: sup-01, port: 8080, expose: [icinga.exemple.internal] } diff --git a/exemples/modeles/observabilite/plan/bases-donnees.yml b/exemples/modeles/observabilite/plan/bases-donnees.yml index 50c2ee7..1b46131 100644 --- a/exemples/modeles/observabilite/plan/bases-donnees.yml +++ b/exemples/modeles/observabilite/plan/bases-donnees.yml @@ -1,13 +1,9 @@ --- serveurs_bd: - pg-principal: - type: postgres - hote: 10.10.13.11 - port: 5432 - groupe: serveur_postgresql + sql-01: { type: postgres, hote: data-sql-01, port: 5432, groupe: serveur_postgresql } bases_donnees: icingadb: - serveur: pg-principal + serveur: sql-01 base: icingadb proprietaire: icingadb secret: vault_bd_icingadb diff --git a/exemples/modeles/observabilite/plan/domaines.yml b/exemples/modeles/observabilite/plan/domaines.yml index 367ea72..a0ff751 100644 --- a/exemples/modeles/observabilite/plan/domaines.yml +++ b/exemples/modeles/observabilite/plan/domaines.yml @@ -1,7 +1,4 @@ --- domaines_publics: - exemple.ca: - autorite: primaire-cache - edge: serveur_nginx - secondaires: [] - dnssec: false + exemple.ca: { autorite: primaire-cache, edge: serveur_nginx, secondaires: [], dnssec: false } + exemple.internal: { autorite: interne, edge: serveur_nginx, secondaires: [], dnssec: false } diff --git a/exemples/modeles/observabilite/plan/nomenclature.yml b/exemples/modeles/observabilite/plan/nomenclature.yml index 49abd61..bb8e55c 100644 --- a/exemples/modeles/observabilite/plan/nomenclature.yml +++ b/exemples/modeles/observabilite/plan/nomenclature.yml @@ -1,45 +1,21 @@ --- -supernet: 10.10.0.0/16 +# MODÈLE « observabilite » — base + données + observabilité/supervision (7 VM). +# index : ⚠️ REMPLACER par l'index unique du tenant. +index: 1 +supernet: 10.11.0.0/16 +vmid_schema: ip-miroir cidr_hote: 24 -reservations: - passerelle: 1 - reserve_min: 2 - reserve_max: 9 +reservations: { passerelle: 1, reserve_min: 2, reserve_max: 9 } categories: - 1: - libelle: Fondations - vlan: 11 - sous_reseau: 10.10.11.0/24 - passerelle: 10.10.11.1 - 3: - libelle: Donnees - vlan: 13 - sous_reseau: 10.10.13.0/24 - passerelle: 10.10.13.1 - 4: - libelle: Observabilite - vlan: 14 - sous_reseau: 10.10.14.0/24 - passerelle: 10.10.14.1 + 1: { libelle: Frontiere, vlan: 16, sous_reseau: 10.11.16.0/24, passerelle: 10.11.16.1 } + 3: { libelle: Donnees, vlan: 18, sous_reseau: 10.11.18.0/24, passerelle: 10.11.18.1 } + 4: { libelle: Services-infra, vlan: 19, sous_reseau: 10.11.19.0/24, passerelle: 10.11.19.1 } + 5: { libelle: Observabilite, vlan: 20, sous_reseau: 10.11.20.0/24, passerelle: 10.11.20.1 } fonctions: - data: - categorie: 3 - service: 1 - infra-dns: - categorie: 1 - service: 4 - infra-edge: - categorie: 1 - service: 2 - infra-mail: - categorie: 1 - service: 3 - infra-pki: - categorie: 1 - service: 1 - mon: - categorie: 4 - service: 4 - obs: - categorie: 4 - service: 1 + infra-edge: { categorie: 1, service: 1 } + data-sql: { categorie: 3, service: 1 } + infra-dns: { categorie: 4, service: 1 } + infra-pki: { categorie: 4, service: 2 } + infra-mail: { categorie: 4, service: 3 } + obs: { categorie: 5, service: 1 } + sup: { categorie: 5, service: 2 } diff --git a/exemples/modeles/observabilite/plan/serveurs.yml b/exemples/modeles/observabilite/plan/serveurs.yml index a677903..f0cc81a 100644 --- a/exemples/modeles/observabilite/plan/serveurs.yml +++ b/exemples/modeles/observabilite/plan/serveurs.yml @@ -1,23 +1,9 @@ --- serveurs: - infra-pki-01: - fonction: infra-pki - etat: planifie - infra-edge-01: - fonction: infra-edge - etat: planifie - infra-mail-01: - fonction: infra-mail - etat: planifie - infra-dns-01: - fonction: infra-dns - etat: planifie - data-01: - fonction: data - etat: planifie - obs-01: - fonction: obs - etat: planifie - mon-01: - fonction: mon - etat: planifie + infra-pki-01: { fonction: infra-pki, etat: planifie, disque: 32G, integrations: [client_backup] } + infra-edge-01: { fonction: infra-edge, etat: planifie, integrations: [client_pki] } + infra-mail-01: { fonction: infra-mail, etat: planifie, integrations: [client_pki, client_backup] } + infra-dns-01: { fonction: infra-dns, etat: planifie, disque: 40G, integrations: [client_pki] } + data-sql-01: { fonction: data-sql, etat: planifie, integrations: [client_pki, client_unbound, client_backup, client_metrique, client_journal, client_smtp] } + obs-01: { fonction: obs, etat: planifie, integrations: [client_pki, client_metrique, client_journal, client_smtp] } + sup-01: { fonction: sup, etat: planifie, integrations: [client_pki] } diff --git a/exemples/modeles/presence-web/README.md b/exemples/modeles/presence-web/README.md index cade84f..7820ced 100644 --- a/exemples/modeles/presence-web/README.md +++ b/exemples/modeles/presence-web/README.md @@ -1,9 +1,11 @@ -# Modèle : Présence Web +# Modèle : Présence Web ⚠️ ASPIRATIONNEL -Écosystème pour héberger **sites et applications web** : socle souverain (DNS, -PKI, edge TLS, relais courriel) + couche web (frontal + dorsal) + données -(PostgreSQL + Redis). 7 VM. +> **Ce modèle n'est pas prêt à déployer.** Il repose sur des fonctions +> `web-frontal` / `web-dorsal` qui **n'ont pas encore de rôle Set-OPS implémenté** +> (seulement des empreintes de dimensionnement par défaut). À finaliser une fois +> ces rôles construits — voir `docs/multi-instances.md`. -Renseignez : `inventories/production/group_vars/all.yml` (`domaine_interne`), -`plan/domaines.yml` (votre domaine public), `plan/nomenclature.yml` (supernet), -puis générez l'inventaire (voir `exemples/modeles/README.md`). +Objectif visé : héberger **sites et applications web** — socle souverain (DNS, PKI, +edge TLS, relais courriel) + couche web (frontal + dorsal) + données (PostgreSQL/Redis). + +En attendant, pour un écosystème complet **prouvé**, utiliser le modèle **`integral`**. diff --git a/exemples/modeles/socle/README.md b/exemples/modeles/socle/README.md index 19eda35..215438f 100644 --- a/exemples/modeles/socle/README.md +++ b/exemples/modeles/socle/README.md @@ -1,5 +1,8 @@ -# Modele : socle +# Modèle : socle -Socle souverain : DNS interne, AC/PKI, edge TLS, relais courriel. +Infrastructure de base souveraine — **4 VM** : edge (nginx), DNS (PowerDNS), +PKI (step-ca), magasin courriel (Dovecot). Le point de départ minimal, extensible +vers un écosystème complet (voir modèle `integral`). -4 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). +Zones : Frontière (VLAN 16) · Services-infra (VLAN 19). VMID `ip-miroir` 9 chiffres. +Copier vers `OPS-`, adapter `index`/domaine/intrants, puis `make instancier`. diff --git a/exemples/modeles/socle/inventories/production/group_vars/all.yml b/exemples/modeles/socle/inventories/production/group_vars/all.yml index 92ed206..d96622e 100644 --- a/exemples/modeles/socle/inventories/production/group_vars/all.yml +++ b/exemples/modeles/socle/inventories/production/group_vars/all.yml @@ -1,3 +1,6 @@ --- -domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +domaine_interne: "exemple.internal" +fuseau_horaire: "America/Toronto" +organisation: "Exemple" +identite_realm: "exemple" setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/socle/plan/applications.yml b/exemples/modeles/socle/plan/applications.yml index e5a86e2..d975436 100644 --- a/exemples/modeles/socle/plan/applications.yml +++ b/exemples/modeles/socle/plan/applications.yml @@ -1,14 +1,6 @@ --- applications: - step_ca: - groupe: serveur_step_ca - hote: infra-pki-01 - nginx: - groupe: serveur_nginx - hote: infra-edge-01 - sendmail: - groupe: serveur_postfix - hote: infra-mail-01 - powerdns: - groupe: serveur_powerdns - hote: infra-dns-01 + step_ca: { groupe: serveur_step_ca, hote: infra-pki-01 } + nginx: { groupe: serveur_nginx, hote: infra-edge-01 } + powerdns: { groupe: serveur_powerdns, hote: infra-dns-01 } + dovecot: { groupe: serveur_dovecot, hote: infra-mail-01 } diff --git a/exemples/modeles/socle/plan/bases-donnees.yml b/exemples/modeles/socle/plan/bases-donnees.yml index 60ca194..5b06aa8 100644 --- a/exemples/modeles/socle/plan/bases-donnees.yml +++ b/exemples/modeles/socle/plan/bases-donnees.yml @@ -1,3 +1,4 @@ --- +# socle : aucune base de données. serveurs_bd: {} bases_donnees: {} diff --git a/exemples/modeles/socle/plan/domaines.yml b/exemples/modeles/socle/plan/domaines.yml index 367ea72..a0ff751 100644 --- a/exemples/modeles/socle/plan/domaines.yml +++ b/exemples/modeles/socle/plan/domaines.yml @@ -1,7 +1,4 @@ --- domaines_publics: - exemple.ca: - autorite: primaire-cache - edge: serveur_nginx - secondaires: [] - dnssec: false + exemple.ca: { autorite: primaire-cache, edge: serveur_nginx, secondaires: [], dnssec: false } + exemple.internal: { autorite: interne, edge: serveur_nginx, secondaires: [], dnssec: false } diff --git a/exemples/modeles/socle/plan/nomenclature.yml b/exemples/modeles/socle/plan/nomenclature.yml index 5b5d735..db4f25e 100644 --- a/exemples/modeles/socle/plan/nomenclature.yml +++ b/exemples/modeles/socle/plan/nomenclature.yml @@ -1,26 +1,17 @@ --- -supernet: 10.10.0.0/16 +# MODÈLE « socle » — infrastructure de base (4 VM) : edge, DNS, PKI, magasin mail. +# Zones/VLAN alignés sur integral (un socle peut grandir vers un écosystème complet). +# index : ⚠️ REMPLACER par l'index unique du tenant (préfixe VMID + supernet 10.(10+index)). +index: 1 +supernet: 10.11.0.0/16 +vmid_schema: ip-miroir cidr_hote: 24 -reservations: - passerelle: 1 - reserve_min: 2 - reserve_max: 9 +reservations: { passerelle: 1, reserve_min: 2, reserve_max: 9 } categories: - 1: - libelle: Fondations - vlan: 11 - sous_reseau: 10.10.11.0/24 - passerelle: 10.10.11.1 + 1: { libelle: Frontiere, vlan: 16, sous_reseau: 10.11.16.0/24, passerelle: 10.11.16.1 } + 4: { libelle: Services-infra, vlan: 19, sous_reseau: 10.11.19.0/24, passerelle: 10.11.19.1 } fonctions: - infra-dns: - categorie: 1 - service: 4 - infra-edge: - categorie: 1 - service: 2 - infra-mail: - categorie: 1 - service: 3 - infra-pki: - categorie: 1 - service: 1 + infra-edge: { categorie: 1, service: 1 } + infra-dns: { categorie: 4, service: 1 } + infra-pki: { categorie: 4, service: 2 } + infra-mail: { categorie: 4, service: 3 } diff --git a/exemples/modeles/socle/plan/serveurs.yml b/exemples/modeles/socle/plan/serveurs.yml index 123d180..f6eb78e 100644 --- a/exemples/modeles/socle/plan/serveurs.yml +++ b/exemples/modeles/socle/plan/serveurs.yml @@ -1,14 +1,6 @@ --- serveurs: - infra-pki-01: - fonction: infra-pki - etat: planifie - infra-edge-01: - fonction: infra-edge - etat: planifie - infra-mail-01: - fonction: infra-mail - etat: planifie - infra-dns-01: - fonction: infra-dns - etat: planifie + infra-pki-01: { fonction: infra-pki, etat: planifie, disque: 32G, integrations: [client_backup] } + infra-edge-01: { fonction: infra-edge, etat: planifie, integrations: [client_pki] } + infra-mail-01: { fonction: infra-mail, etat: planifie, integrations: [client_pki, client_backup] } + infra-dns-01: { fonction: infra-dns, etat: planifie, disque: 40G, integrations: [client_pki] }