From a1cfe77b4a930b02276663a2f766feb3fcd2b090 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Sun, 5 Jul 2026 19:31:50 -0400 Subject: [PATCH] =?UTF-8?q?Mod=C3=A8les=20:=20extraire=20les=20mod=C3=A8le?= =?UTF-8?q?s=20assembl=C3=A9s=20vers=20un=20d=C3=A9p=C3=B4t=20priv=C3=A9?= =?UTF-8?q?=20(Set-OPS-modeles)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le public ne garde que le modèle générique 'socle' (preuve libre reproductible). Les modèles assemblés (identite/observabilite/forge/collaboration/presence-web/ integral) = actif commercial, déplacés dans Set-OPS-modeles (privé). Le moteur (rôles, machinerie) reste libre. NB : ces modèles restent dans l'HISTORIQUE git de ce dépôt — mettre Set-OPS-Public en visibilité privée sur le Forgejo, ou réécrire l'historique (git filter-repo). Co-Authored-By: Claude Opus 4.8 --- exemples/modeles/README.md | 27 +++--- exemples/modeles/collaboration/README.md | 36 -------- .../inventories/production/group_vars/all.yml | 6 -- .../group_vars/serveur_keycloak.yml | 11 --- .../collaboration/plan/applications.yml | 25 ------ .../collaboration/plan/bases-donnees.yml | 20 ----- .../modeles/collaboration/plan/domaines.yml | 4 - .../collaboration/plan/nomenclature.yml | 24 ----- .../modeles/collaboration/plan/serveurs.yml | 10 --- exemples/modeles/forge/README.md | 8 -- .../inventories/production/group_vars/all.yml | 6 -- exemples/modeles/forge/plan/applications.yml | 9 -- exemples/modeles/forge/plan/bases-donnees.yml | 12 --- exemples/modeles/forge/plan/domaines.yml | 4 - exemples/modeles/forge/plan/nomenclature.yml | 20 ----- exemples/modeles/forge/plan/serveurs.yml | 8 -- exemples/modeles/identite/README.md | 7 -- .../inventories/production/group_vars/all.yml | 6 -- .../modeles/identite/plan/applications.yml | 14 --- .../modeles/identite/plan/bases-donnees.yml | 12 --- exemples/modeles/identite/plan/domaines.yml | 4 - .../modeles/identite/plan/nomenclature.yml | 21 ----- exemples/modeles/identite/plan/serveurs.yml | 9 -- exemples/modeles/integral/README.md | 27 ------ .../inventories/production/group_vars/all.yml | 8 -- .../group_vars/serveur_keycloak.yml | 12 --- .../modeles/integral/plan/applications.yml | 89 ------------------- .../modeles/integral/plan/bases-donnees.yml | 41 --------- exemples/modeles/integral/plan/domaines.yml | 15 ---- .../modeles/integral/plan/nomenclature.yml | 69 -------------- exemples/modeles/integral/plan/serveurs.yml | 87 ------------------ exemples/modeles/observabilite/README.md | 8 -- .../inventories/production/group_vars/all.yml | 6 -- .../observabilite/plan/applications.yml | 13 --- .../observabilite/plan/bases-donnees.yml | 12 --- .../modeles/observabilite/plan/domaines.yml | 4 - .../observabilite/plan/nomenclature.yml | 21 ----- .../modeles/observabilite/plan/serveurs.yml | 9 -- exemples/modeles/presence-web/README.md | 11 --- .../inventories/production/group_vars/all.yml | 3 - .../group_vars/serveur_web_dorsal.yml | 12 --- .../group_vars/serveur_web_frontal.yml | 10 --- .../presence-web/plan/applications.yml | 18 ---- .../presence-web/plan/bases-donnees.yml | 4 - .../modeles/presence-web/plan/domaines.yml | 7 -- .../presence-web/plan/nomenclature.yml | 17 ---- .../modeles/presence-web/plan/serveurs.yml | 9 -- 47 files changed, 13 insertions(+), 802 deletions(-) delete mode 100644 exemples/modeles/collaboration/README.md delete mode 100644 exemples/modeles/collaboration/inventories/production/group_vars/all.yml delete mode 100644 exemples/modeles/collaboration/inventories/production/group_vars/serveur_keycloak.yml delete mode 100644 exemples/modeles/collaboration/plan/applications.yml delete mode 100644 exemples/modeles/collaboration/plan/bases-donnees.yml delete mode 100644 exemples/modeles/collaboration/plan/domaines.yml delete mode 100644 exemples/modeles/collaboration/plan/nomenclature.yml delete mode 100644 exemples/modeles/collaboration/plan/serveurs.yml delete mode 100644 exemples/modeles/forge/README.md delete mode 100644 exemples/modeles/forge/inventories/production/group_vars/all.yml delete mode 100644 exemples/modeles/forge/plan/applications.yml delete mode 100644 exemples/modeles/forge/plan/bases-donnees.yml delete mode 100644 exemples/modeles/forge/plan/domaines.yml delete mode 100644 exemples/modeles/forge/plan/nomenclature.yml delete mode 100644 exemples/modeles/forge/plan/serveurs.yml delete mode 100644 exemples/modeles/identite/README.md delete mode 100644 exemples/modeles/identite/inventories/production/group_vars/all.yml delete mode 100644 exemples/modeles/identite/plan/applications.yml delete mode 100644 exemples/modeles/identite/plan/bases-donnees.yml delete mode 100644 exemples/modeles/identite/plan/domaines.yml delete mode 100644 exemples/modeles/identite/plan/nomenclature.yml delete mode 100644 exemples/modeles/identite/plan/serveurs.yml delete mode 100644 exemples/modeles/integral/README.md delete mode 100644 exemples/modeles/integral/inventories/production/group_vars/all.yml delete mode 100644 exemples/modeles/integral/inventories/production/group_vars/serveur_keycloak.yml delete mode 100644 exemples/modeles/integral/plan/applications.yml delete mode 100644 exemples/modeles/integral/plan/bases-donnees.yml delete mode 100644 exemples/modeles/integral/plan/domaines.yml delete mode 100644 exemples/modeles/integral/plan/nomenclature.yml delete mode 100644 exemples/modeles/integral/plan/serveurs.yml delete mode 100644 exemples/modeles/observabilite/README.md delete mode 100644 exemples/modeles/observabilite/inventories/production/group_vars/all.yml delete mode 100644 exemples/modeles/observabilite/plan/applications.yml delete mode 100644 exemples/modeles/observabilite/plan/bases-donnees.yml delete mode 100644 exemples/modeles/observabilite/plan/domaines.yml delete mode 100644 exemples/modeles/observabilite/plan/nomenclature.yml delete mode 100644 exemples/modeles/observabilite/plan/serveurs.yml delete mode 100644 exemples/modeles/presence-web/README.md delete mode 100644 exemples/modeles/presence-web/inventories/production/group_vars/all.yml delete mode 100644 exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_dorsal.yml delete mode 100644 exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_frontal.yml delete mode 100644 exemples/modeles/presence-web/plan/applications.yml delete mode 100644 exemples/modeles/presence-web/plan/bases-donnees.yml delete mode 100644 exemples/modeles/presence-web/plan/domaines.yml delete mode 100644 exemples/modeles/presence-web/plan/nomenclature.yml delete mode 100644 exemples/modeles/presence-web/plan/serveurs.yml diff --git a/exemples/modeles/README.md b/exemples/modeles/README.md index c1f14d6..75816fa 100644 --- a/exemples/modeles/README.md +++ b/exemples/modeles/README.md @@ -1,11 +1,12 @@ # Modèles d'écosystèmes numériques -Des **instances prêtes à déployer** : un hébergeur copie le modèle qui colle à son -offre, le renseigne à ses couleurs (ou celles de son client), et instancie. +Un **modèle générique prêt à déployer** : copier `socle`, le renseigner à ses +couleurs, instancier. Le socle souverain minimal — DNS interne, AC/PKI, edge TLS, +relais courriel — sur lequel on ajoute des modules. ## Utilisation ```bash -cp -r exemples/modeles/ ../mon-instance +cp -r exemples/modeles/socle ../mon-instance # éditer mon-instance : intrants (domaine_interne, fuseau_horaire, organisation, # identite_realm), plan/nomenclature.yml (index de fédération + zones), domaines cd @@ -13,16 +14,14 @@ ln -s ../mon-instance instance # ou export SETOPS_INSTANCE=../mon-instanc make instancier-appliquer FORCE=1 # première génération de l'inventaire ``` -## Structure : socle + modules -Tout modèle part d'un **socle souverain** (DNS interne, AC/PKI, edge TLS, relais -courriel) et ajoute des **modules** selon l'offre. +## Modèles assemblés (dépôt privé) +Les modèles **assemblés** — combinaisons de modules prêtes pour des offres +(`identite`, `observabilite`, `forge`, `collaboration`, `presence-web`, `integral`) — +ne sont pas ici. Ils constituent un **actif à part**, dans un dépôt privé +(`Set-OPS-modeles`). Le **moteur** (rôles, machinerie) reste libre ; `socle` en est +la preuve reproductible. -| Modèle | = socle + | État | +| Modèle | = socle + | Où | | --- | --- | --- | -| `socle` | (rien) | ✅ | -| `presence-web` | web (frontal statique + dorsal dynamique) + données | ✅ | -| `forge` | Forgejo + données | ✅ | -| `identite` | LDAP + Keycloak (SSO) | ✅ | -| `observabilite` | Prometheus/Loki/Grafana + Icinga | ✅ | -| `collaboration` | identité + Nextcloud + Collabora | ✅ | -| `integral` | tout | ✅ | +| `socle` | (rien) — le socle générique | ✅ public (ici) | +| identite · observabilite · forge · collaboration · presence-web · integral | modules assemblés | 🔒 privé | diff --git a/exemples/modeles/collaboration/README.md b/exemples/modeles/collaboration/README.md deleted file mode 100644 index 0f5c3a3..0000000 --- a/exemples/modeles/collaboration/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Modèle : collaboration - -Socle + identité + **collaboration** — **8 VM** : le modèle `identite` -(socle infra + PostgreSQL/Redis + OpenLDAP + Keycloak) **+ un nœud `collab`** -exécutant **Nextcloud** (fichiers, documents, agendas, contacts) et **Collabora -Online** (édition de documents, WOPI). SSO Keycloak, PG chiffré, exposés via l'edge. - -C'est le cœur des offres **maison-obnl** (OBNL/coops) et **cabinet** (PME de -professionnels) : le remplaçant souverain de Google Workspace / Microsoft 365. - -Zones : Frontière (16) · Identité (17) · Données (18) · Services-infra (19) · -**Collaboration (20)**. VMID `ip-miroir`. - -## Exposé -- `cloud.` → Nextcloud (collab-01:80) -- `bureau.` → Collabora (collab-01:9980, **WebSocket** auto) - -Les SAN du cert edge et le plancher /etc/hosts sont **dérivés du plan** (aucune -liste manuelle) ; le vhost Collabora est WebSocket-aware via `websocket: true`. - -## Secrets de voûte requis (Ansible Vault) -```yaml -vault_bd_nextcloud: "..." # mot de passe BD de l'utilisateur nextcloud -vault_nextcloud_admin: "..." # mot de passe admin Nextcloud initial -vault_nextcloud_oidc: "..." # secret du client OIDC 'nextcloud' (= côté Keycloak) -``` -(plus ceux du modèle `identite` : vault_bd_keycloak, vault_keycloak_admin, PKI…) - -## Utilisation -```bash -cp -r exemples/modeles/collaboration ../OPS- -# éditer : intrants (domaine_interne, organisation, identite_realm), -# nomenclature.yml (index unique + supernet du tenant), domaines -ln -s ../OPS- instance -make instancier-appliquer FORCE=1 -``` diff --git a/exemples/modeles/collaboration/inventories/production/group_vars/all.yml b/exemples/modeles/collaboration/inventories/production/group_vars/all.yml deleted file mode 100644 index d96622e..0000000 --- a/exemples/modeles/collaboration/inventories/production/group_vars/all.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -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/collaboration/inventories/production/group_vars/serveur_keycloak.yml b/exemples/modeles/collaboration/inventories/production/group_vars/serveur_keycloak.yml deleted file mode 100644 index b6b1368..0000000 --- a/exemples/modeles/collaboration/inventories/production/group_vars/serveur_keycloak.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -# Client OIDC 'nextcloud' enregistre dans le realm par le role serveur_keycloak. -# Le secret reference la meme variable de voute que l'app (vault_nextcloud_oidc). -serveur_keycloak_clients: - - clientId: nextcloud - redirect_uris: - - "https://cloud.{{ domaine_interne }}/apps/user_oidc/code" - - "https://cloud.{{ domaine_interne }}/*" - web_origins: - - "https://cloud.{{ domaine_interne }}" - secret: "{{ vault_nextcloud_oidc }}" diff --git a/exemples/modeles/collaboration/plan/applications.yml b/exemples/modeles/collaboration/plan/applications.yml deleted file mode 100644 index ed915b8..0000000 --- a/exemples/modeles/collaboration/plan/applications.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- -applications: - 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: id-sso-01 - port: 8080 - expose: [keycloak.exemple.internal] - nextcloud: - groupe: serveur_nextcloud - hote: collab-01 - port: 80 - expose: [cloud.exemple.internal] - collabora: - groupe: serveur_collabora - hote: collab-01 - port: 9980 - websocket: true - expose: [bureau.exemple.internal] diff --git a/exemples/modeles/collaboration/plan/bases-donnees.yml b/exemples/modeles/collaboration/plan/bases-donnees.yml deleted file mode 100644 index 964d7c0..0000000 --- a/exemples/modeles/collaboration/plan/bases-donnees.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -serveurs_bd: - sql-01: { type: postgres, hote: data-sql-01, port: 5432, groupe: serveur_postgresql } -bases_donnees: - keycloak: - serveur: sql-01 - base: keycloak - proprietaire: keycloak - secret: vault_bd_keycloak - consommateur: serveur_keycloak - portee: groupe - usage: principale - nextcloud: - serveur: sql-01 - base: nextcloud - proprietaire: nextcloud - secret: vault_bd_nextcloud - consommateur: serveur_nextcloud - portee: groupe - usage: principale diff --git a/exemples/modeles/collaboration/plan/domaines.yml b/exemples/modeles/collaboration/plan/domaines.yml deleted file mode 100644 index a0ff751..0000000 --- a/exemples/modeles/collaboration/plan/domaines.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -domaines_publics: - 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/collaboration/plan/nomenclature.yml b/exemples/modeles/collaboration/plan/nomenclature.yml deleted file mode 100644 index 9ac039f..0000000 --- a/exemples/modeles/collaboration/plan/nomenclature.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -# MODÈLE « collaboration » — socle + identité + collaboration (8 VM). -# = identite + un nœud collab (Nextcloud + Collabora). Débloque maison-obnl/cabinet. -# 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 } -categories: - 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 } - 5: { libelle: Collaboration, vlan: 20, sous_reseau: 10.11.20.0/24, passerelle: 10.11.20.1 } -fonctions: - 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 } - collab: { categorie: 5, service: 1 } diff --git a/exemples/modeles/collaboration/plan/serveurs.yml b/exemples/modeles/collaboration/plan/serveurs.yml deleted file mode 100644 index 942e4d3..0000000 --- a/exemples/modeles/collaboration/plan/serveurs.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -serveurs: - 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] } - collab-01: { fonction: collab, etat: planifie, disque: 40G, integrations: [client_pki, client_backup, client_metrique, client_journal, client_smtp] } diff --git a/exemples/modeles/forge/README.md b/exemples/modeles/forge/README.md deleted file mode 100644 index d214cbd..0000000 --- a/exemples/modeles/forge/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Modèle : forge - -Base + données + **forge git** — **6 VM** : socle infra + PostgreSQL/Redis + -Forgejo (dépôts git, exposé via l'edge). - -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 deleted file mode 100644 index d96622e..0000000 --- a/exemples/modeles/forge/inventories/production/group_vars/all.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -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 deleted file mode 100644 index 73866bf..0000000 --- a/exemples/modeles/forge/plan/applications.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -applications: - 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 deleted file mode 100644 index 1f5dd7e..0000000 --- a/exemples/modeles/forge/plan/bases-donnees.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -serveurs_bd: - sql-01: { type: postgres, hote: data-sql-01, port: 5432, groupe: serveur_postgresql } -bases_donnees: - forgejo: - serveur: sql-01 - base: forgejo - proprietaire: forgejo - secret: vault_bd_forgejo - consommateur: serveur_forgejo - portee: groupe - usage: principale diff --git a/exemples/modeles/forge/plan/domaines.yml b/exemples/modeles/forge/plan/domaines.yml deleted file mode 100644 index a0ff751..0000000 --- a/exemples/modeles/forge/plan/domaines.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -domaines_publics: - 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 deleted file mode 100644 index a619164..0000000 --- a/exemples/modeles/forge/plan/nomenclature.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -# 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 } -categories: - 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: - 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 deleted file mode 100644 index 9e87756..0000000 --- a/exemples/modeles/forge/plan/serveurs.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -serveurs: - 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 deleted file mode 100644 index 27ec9ed..0000000 --- a/exemples/modeles/identite/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Modèle : identite - -Base + données + **identité** — **7 VM** : socle infra + PostgreSQL/Redis + -OpenLDAP (annuaire, source de vérité) + Keycloak (SSO/OIDC, exposé via l'edge). - -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 deleted file mode 100644 index d96622e..0000000 --- a/exemples/modeles/identite/inventories/production/group_vars/all.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -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 deleted file mode 100644 index e3c885d..0000000 --- a/exemples/modeles/identite/plan/applications.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -applications: - 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: id-sso-01 - port: 8080 - expose: [keycloak.exemple.internal] diff --git a/exemples/modeles/identite/plan/bases-donnees.yml b/exemples/modeles/identite/plan/bases-donnees.yml deleted file mode 100644 index cc6bf4a..0000000 --- a/exemples/modeles/identite/plan/bases-donnees.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -serveurs_bd: - sql-01: { type: postgres, hote: data-sql-01, port: 5432, groupe: serveur_postgresql } -bases_donnees: - keycloak: - serveur: sql-01 - base: keycloak - proprietaire: keycloak - secret: vault_bd_keycloak - consommateur: serveur_keycloak - portee: groupe - usage: principale diff --git a/exemples/modeles/identite/plan/domaines.yml b/exemples/modeles/identite/plan/domaines.yml deleted file mode 100644 index a0ff751..0000000 --- a/exemples/modeles/identite/plan/domaines.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -domaines_publics: - 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 deleted file mode 100644 index 9d61239..0000000 --- a/exemples/modeles/identite/plan/nomenclature.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -# 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 } -categories: - 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: - 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 deleted file mode 100644 index 5788937..0000000 --- a/exemples/modeles/identite/plan/serveurs.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -serveurs: - 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/integral/README.md b/exemples/modeles/integral/README.md deleted file mode 100644 index 8b2f666..0000000 --- a/exemples/modeles/integral/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Modèle : integral - -Écosystème souverain **complet et éprouvé** — le socle de référence pour un nouveau tenant. - -**12 VM** réparties en **6 zones de sécurité** (un /24 + VLAN chacune) : - -| Zone | VLAN | Fonctions | -|---|---|---| -| Frontière | 16 | infra-edge (nginx), edge-mta (Postfix/rspamd) | -| Identité | 17 | id-ldap (OpenLDAP), id-sso (Keycloak) | -| Données | 18 | data-sql (PostgreSQL/Redis), sauvegarde (restic) | -| Services-infra | 19 | infra-dns (PowerDNS), infra-pki (step-ca), infra-mail (Dovecot) | -| Observabilité | 20 | obs (Prometheus/Loki/Grafana), sup (Icinga + BPM) | -| Applications | 21 | forge (Forgejo) | - -## Pour instancier un tenant -1. Copier ce dépôt-modèle vers `OPS-` (dépôt d'instance autonome). -2. Adapter : - - `plan/nomenclature.yml` : **`index`** (identifiant unique du tenant → préfixe VMID + supernet `10.(10+index).0.0/16`) et les `sous_reseau`/`passerelle` des 6 zones. - - `inventories/production/group_vars/all.yml` : `domaine_interne`, `fuseau_horaire`, `organisation`, `identite_realm`. - - `plan/domaines.yml` et les FQDN d'`expose` dans `plan/applications.yml`. -3. Pointer le sélecteur (`instance → OPS-`) puis `make instancier`. - -## Dérivations automatiques -Le nom d'un serveur (`data-sql-01`) + la nomenclature suffisent : **VMID, IP, VLAN, passerelle** sont dérivés — rien à saisir. Le VMID suit le schéma **`ip-miroir`** (9 chiffres `I·VVV·HHH·NN` = index·VLAN·octet-hôte·séquence : il *contient* l'IP + le tenant). - -Voir `exemples/modeles/README.md` pour le mécanisme général. diff --git a/exemples/modeles/integral/inventories/production/group_vars/all.yml b/exemples/modeles/integral/inventories/production/group_vars/all.yml deleted file mode 100644 index 742162d..0000000 --- a/exemples/modeles/integral/inventories/production/group_vars/all.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -# MODÈLE integral — intrants d'identité de l'instance. À adapter à VOTRE tenant. -domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne (.internal) -fuseau_horaire: "America/Toronto" # <- fuseau de l'organisation -organisation: "Exemple" # <- nom (annuaire LDAP, certificats) -identite_realm: "exemple" # <- realm SSO Keycloak de ce tenant - -setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/integral/inventories/production/group_vars/serveur_keycloak.yml b/exemples/modeles/integral/inventories/production/group_vars/serveur_keycloak.yml deleted file mode 100644 index db4b371..0000000 --- a/exemples/modeles/integral/inventories/production/group_vars/serveur_keycloak.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Client OIDC 'nextcloud' enregistre dans le realm par le role serveur_keycloak. -# (Modele integral : les autres clients — forgejo/grafana/icingaweb2 — sont a -# ajouter ici selon les apps exposees, avec leurs secrets de voute respectifs.) -serveur_keycloak_clients: - - clientId: nextcloud - redirect_uris: - - "https://cloud.{{ domaine_interne }}/apps/user_oidc/code" - - "https://cloud.{{ domaine_interne }}/*" - web_origins: - - "https://cloud.{{ domaine_interne }}" - secret: "{{ vault_nextcloud_oidc }}" diff --git a/exemples/modeles/integral/plan/applications.yml b/exemples/modeles/integral/plan/applications.yml deleted file mode 100644 index 98bf093..0000000 --- a/exemples/modeles/integral/plan/applications.yml +++ /dev/null @@ -1,89 +0,0 @@ -# MODÈLE integral — applications (application = entité pivot). -# Adapter les FQDN d'exposition à VOTRE domaine interne. ---- -applications: - dovecot: - groupe: serveur_dovecot - hote: infra-mail-01 - postfix: - groupe: serveur_postfix - hote: edge-mta-01 - liens: - - vers: dovecot - role: mailstore - - vers: rspamd - role: milter - rspamd: - groupe: serveur_rspamd - hote: edge-mta-01 - postgresql: - groupe: serveur_postgresql - hote: data-sql-01 - redis: - groupe: serveur_redis - hote: data-sql-01 - backup: - groupe: serveur_backup - hote: backup-01 - keycloak: - groupe: serveur_keycloak - hote: id-sso-01 - port: 8080 - expose: - - keycloak.exemple.internal - 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 - forgejo: - groupe: serveur_forgejo - hote: forge-01 - port: 3000 - expose: - - forge.exemple.internal - nextcloud: - groupe: serveur_nextcloud - hote: collab-01 - port: 80 - expose: - - cloud.exemple.internal - collabora: - groupe: serveur_collabora - hote: collab-01 - port: 9980 - websocket: true - expose: - - bureau.exemple.internal - icinga: - groupe: serveur_icinga - hote: sup-01 - icingaweb2: - groupe: serveur_icingaweb2 - hote: sup-01 - port: 8080 - oauth2_proxy: - groupe: serveur_oauth2_proxy - hote: sup-01 - port: 4180 - expose: - - icinga.exemple.internal - openldap: - groupe: serveur_openldap - hote: id-ldap-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 diff --git a/exemples/modeles/integral/plan/bases-donnees.yml b/exemples/modeles/integral/plan/bases-donnees.yml deleted file mode 100644 index 088e162..0000000 --- a/exemples/modeles/integral/plan/bases-donnees.yml +++ /dev/null @@ -1,41 +0,0 @@ -# MODÈLE integral — bases de données. 'secret' nomme une variable Ansible Vault. ---- -serveurs_bd: - sql-01: - type: postgres - hote: data-sql-01 - port: 5432 - groupe: serveur_postgresql -bases_donnees: - keycloak: - serveur: sql-01 - base: keycloak - proprietaire: keycloak - secret: vault_bd_keycloak - consommateur: serveur_keycloak - portee: groupe - usage: principale - forgejo: - serveur: sql-01 - base: forgejo - proprietaire: forgejo - secret: vault_bd_forgejo - consommateur: serveur_forgejo - portee: groupe - usage: principale - icingadb: - serveur: sql-01 - base: icingadb - proprietaire: icingadb - secret: vault_bd_icingadb - consommateur: serveur_icinga - portee: groupe - usage: principale - nextcloud: - serveur: sql-01 - base: nextcloud - proprietaire: nextcloud - secret: vault_bd_nextcloud - consommateur: serveur_nextcloud - portee: groupe - usage: principale diff --git a/exemples/modeles/integral/plan/domaines.yml b/exemples/modeles/integral/plan/domaines.yml deleted file mode 100644 index fb80929..0000000 --- a/exemples/modeles/integral/plan/domaines.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -# MODÈLE integral — domaines. Adapter à VOS domaines public/interne. -domaines_publics: - exemple.ca: - autorite: primaire-cache - edge: serveur_nginx - secondaires: [] - dnssec: false - # Domaine interne : parent des expositions derrière l'edge nginx interne. - # Utiliser .internal (et non .local, réservé au mDNS). - exemple.internal: - autorite: interne - edge: serveur_nginx - secondaires: [] - dnssec: false diff --git a/exemples/modeles/integral/plan/nomenclature.yml b/exemples/modeles/integral/plan/nomenclature.yml deleted file mode 100644 index 7916123..0000000 --- a/exemples/modeles/integral/plan/nomenclature.yml +++ /dev/null @@ -1,69 +0,0 @@ ---- -# MODÈLE « integral » — écosystème souverain COMPLET (12 VM). -# Copier ce dépôt-modèle vers OPS-, puis adapter index / supernet / domaine. -# -# index : identifiant UNIQUE du tenant dans la fédération (1, 2, 3…). -# Détermine le préfixe VMID (schéma ip-miroir) et le supernet 10.(10+index).0.0/16. -# ⚠️ REMPLACER par l'index de VOTRE tenant (évite toute collision IP/VMID). -# vmid_schema: ip-miroir → VMID 9 chiffres I·VVV·HHH·NN (index·VLAN·octet-hôte·séquence) : -# le VMID contient littéralement l'IP + le tenant. Lecture directe. -index: 1 -supernet: 10.11.0.0/16 -vmid_schema: ip-miroir -cidr_hote: 24 -reservations: - passerelle: 1 - reserve_min: 2 - reserve_max: 9 -# 6 ZONES de sécurité, un /24 + VLAN chacune (VLAN = 3e octet), dans 10.(10+index).16.0/20. -categories: - 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 - 5: - libelle: Observabilite - vlan: 20 - sous_reseau: 10.11.20.0/24 - passerelle: 10.11.20.1 - 6: - libelle: Applications - vlan: 21 - sous_reseau: 10.11.21.0/24 - passerelle: 10.11.21.1 -fonctions: - # Zone 1 — Frontière - infra-edge: { categorie: 1, service: 1 } - edge-mta: { categorie: 1, service: 2 } - # Zone 2 — Identité - id-ldap: { categorie: 2, service: 1 } - id-sso: { categorie: 2, service: 2 } - # Zone 3 — Données - data-sql: { categorie: 3, service: 1 } - sauvegarde: { categorie: 3, service: 2 } - # Zone 4 — Services-infra - infra-dns: { categorie: 4, service: 1 } - infra-pki: { categorie: 4, service: 2 } - infra-mail: { categorie: 4, service: 3 } - # Zone 5 — Observabilité - obs: { categorie: 5, service: 1 } - sup: { categorie: 5, service: 2 } - # Zone 6 — Applications - forge: { categorie: 6, service: 1 } - collab: { categorie: 6, service: 2 } diff --git a/exemples/modeles/integral/plan/serveurs.yml b/exemples/modeles/integral/plan/serveurs.yml deleted file mode 100644 index 317ec0d..0000000 --- a/exemples/modeles/integral/plan/serveurs.yml +++ /dev/null @@ -1,87 +0,0 @@ -# MODÈLE integral — registre des serveurs (12 VM). etat: planifie (template). -# VMID/IP/VLAN/passerelle DERIVES de la fonction via plan/nomenclature.yml. ---- -serveurs: - 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 - backup-01: - fonction: sauvegarde - etat: planifie - disque: 64G - obs-01: - fonction: obs - etat: planifie - integrations: - - client_pki - - client_metrique - - client_journal - - client_smtp - sup-01: - fonction: sup - etat: planifie - integrations: - - client_pki - forge-01: - fonction: forge - etat: planifie - integrations: - - client_pki - - client_backup - - client_metrique - - client_journal - - client_smtp - collab-01: - fonction: collab - etat: planifie - disque: 40G - integrations: - - client_pki - - client_backup - - client_metrique - - client_journal - - client_smtp diff --git a/exemples/modeles/observabilite/README.md b/exemples/modeles/observabilite/README.md deleted file mode 100644 index c00ad51..0000000 --- a/exemples/modeles/observabilite/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Modèle : observabilite - -Base + données + **observabilité/supervision** — **7 VM** : socle infra + PostgreSQL/ -Redis + Prometheus/Loki/Grafana (métriques & logs) + Icinga/BPM (supervision stratégique). - -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 deleted file mode 100644 index d96622e..0000000 --- a/exemples/modeles/observabilite/inventories/production/group_vars/all.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -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 deleted file mode 100644 index 073d4e5..0000000 --- a/exemples/modeles/observabilite/plan/applications.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -applications: - 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 deleted file mode 100644 index 1b46131..0000000 --- a/exemples/modeles/observabilite/plan/bases-donnees.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -serveurs_bd: - sql-01: { type: postgres, hote: data-sql-01, port: 5432, groupe: serveur_postgresql } -bases_donnees: - icingadb: - serveur: sql-01 - base: icingadb - proprietaire: icingadb - secret: vault_bd_icingadb - consommateur: serveur_icinga - portee: groupe - usage: principale diff --git a/exemples/modeles/observabilite/plan/domaines.yml b/exemples/modeles/observabilite/plan/domaines.yml deleted file mode 100644 index a0ff751..0000000 --- a/exemples/modeles/observabilite/plan/domaines.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -domaines_publics: - 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 deleted file mode 100644 index bb8e55c..0000000 --- a/exemples/modeles/observabilite/plan/nomenclature.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -# 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 } -categories: - 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: - 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 deleted file mode 100644 index f0cc81a..0000000 --- a/exemples/modeles/observabilite/plan/serveurs.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -serveurs: - 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 deleted file mode 100644 index 7820ced..0000000 --- a/exemples/modeles/presence-web/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Modèle : Présence Web ⚠️ ASPIRATIONNEL - -> **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`. - -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/presence-web/inventories/production/group_vars/all.yml b/exemples/modeles/presence-web/inventories/production/group_vars/all.yml deleted file mode 100644 index 92ed206..0000000 --- a/exemples/modeles/presence-web/inventories/production/group_vars/all.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne -setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_dorsal.yml b/exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_dorsal.yml deleted file mode 100644 index 30998ca..0000000 --- a/exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_dorsal.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Webapps dynamiques servies par le dorsal (rôle serveur_web_dorsal) : runtime + -# service systemd, fronteées par nginx local, exposées via l'edge. Exemple Python. -# Une app à BD réseau déclare sa base dans bases-donnees.yml et passe le DSN via env. -serveur_web_dorsal_apps: - - nom: app - server_name: "app.{{ domaine_interne }}" - depot: "https://forge.{{ domaine_interne }}/…/app.git" - branche: main - port: 8001 - commande: ".venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8001" - data_dir: /var/lib/app diff --git a/exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_frontal.yml b/exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_frontal.yml deleted file mode 100644 index e106619..0000000 --- a/exemples/modeles/presence-web/inventories/production/group_vars/serveur_web_frontal.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# Sites statiques servis par le frontal (rôle serveur_web_frontal), clonés depuis -# un dépôt git souverain (Forgejo) et exposés via l'edge (voir applications.yml). -# Remplacer par les vrais sites du tenant. -serveur_web_frontal_sites: - - nom: site - server_name: "site.{{ domaine_interne }}" - depot: "https://forge.{{ domaine_interne }}/…/site.git" - branche: main - sous_dossier: public diff --git a/exemples/modeles/presence-web/plan/applications.yml b/exemples/modeles/presence-web/plan/applications.yml deleted file mode 100644 index ed30692..0000000 --- a/exemples/modeles/presence-web/plan/applications.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -applications: - pki: { groupe: serveur_step_ca, hote: infra-pki-01 } - edge: { groupe: serveur_nginx, hote: infra-edge-01 } - mail: { groupe: serveur_postfix, hote: infra-mail-01 } - dns: { groupe: serveur_powerdns, hote: infra-dns-01 } - bdd: { groupe: serveur_postgresql, hote: data-01, port: 5432 } - cache: { groupe: serveur_redis, hote: data-01 } - frontal: - groupe: serveur_web_frontal - hote: web-frontal-01 - port: 80 - expose: [site.exemple.internal] - dorsal: - groupe: serveur_web_dorsal - hote: web-dorsal-01 - port: 80 - expose: [app.exemple.internal] diff --git a/exemples/modeles/presence-web/plan/bases-donnees.yml b/exemples/modeles/presence-web/plan/bases-donnees.yml deleted file mode 100644 index d6b92c1..0000000 --- a/exemples/modeles/presence-web/plan/bases-donnees.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -serveurs_bd: - pg-principal: { type: postgres, hote: 10.10.13.11, port: 5432, groupe: serveur_postgresql } -bases_donnees: {} diff --git a/exemples/modeles/presence-web/plan/domaines.yml b/exemples/modeles/presence-web/plan/domaines.yml deleted file mode 100644 index 4bd8681..0000000 --- a/exemples/modeles/presence-web/plan/domaines.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -domaines_publics: - exemple.ca: # <- VOTRE domaine public - autorite: primaire-cache - edge: serveur_nginx - secondaires: [] - dnssec: false diff --git a/exemples/modeles/presence-web/plan/nomenclature.yml b/exemples/modeles/presence-web/plan/nomenclature.yml deleted file mode 100644 index 1454e08..0000000 --- a/exemples/modeles/presence-web/plan/nomenclature.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -# Adaptez le supernet à VOTRE réseau interne. -supernet: "10.10.0.0/16" -cidr_hote: 24 -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" } -fonctions: - infra-pki: { categorie: 1, service: 1 } - infra-edge: { categorie: 1, service: 2 } - infra-mail: { categorie: 1, service: 3 } - infra-dns: { categorie: 1, service: 4 } - data: { categorie: 3, service: 1 } - web-frontal: { categorie: 5, service: 3 } - web-dorsal: { categorie: 5, service: 4 } diff --git a/exemples/modeles/presence-web/plan/serveurs.yml b/exemples/modeles/presence-web/plan/serveurs.yml deleted file mode 100644 index 548bf54..0000000 --- a/exemples/modeles/presence-web/plan/serveurs.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -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 } - web-frontal-01: { fonction: web-frontal, etat: planifie } - web-dorsal-01: { fonction: web-dorsal, etat: planifie }