From 603d2f18e1f06e60d42a9a86f22c0b61b12bde5c Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Wed, 24 Jun 2026 11:12:07 -0400 Subject: [PATCH] Catalogue : modeles prets (socle, forge, identite, observabilite, integral) Cinq modeles d'ecosystemes prets a deployer, en plus de presence-web, generes par un script pilote par spec : - socle (4 VM) : DNS/PKI/edge/mail ; - forge (6) : socle + Forgejo + PG ; - identite (6) : socle + LDAP + Keycloak + PG ; - observabilite (7) : socle + Prometheus/Loki/Grafana + Icinga ; - integral (11) : tous les services implementes. Chacun valide par generation : ecosysteme distinct, zero fuite Chezlepro, verificateurs OK. collaboration (Nextcloud/Collabora) reste a construire. Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 2 +- exemples/modeles/README.md | 10 +-- exemples/modeles/forge/README.md | 5 ++ .../inventories/production/group_vars/all.yml | 3 + exemples/modeles/forge/plan/applications.yml | 24 +++++++ exemples/modeles/forge/plan/bases-donnees.yml | 16 +++++ exemples/modeles/forge/plan/domaines.yml | 7 ++ exemples/modeles/forge/plan/nomenclature.yml | 42 ++++++++++++ exemples/modeles/forge/plan/serveurs.yml | 20 ++++++ exemples/modeles/identite/README.md | 5 ++ .../inventories/production/group_vars/all.yml | 3 + .../modeles/identite/plan/applications.yml | 27 ++++++++ .../modeles/identite/plan/bases-donnees.yml | 16 +++++ exemples/modeles/identite/plan/domaines.yml | 7 ++ .../modeles/identite/plan/nomenclature.yml | 42 ++++++++++++ exemples/modeles/identite/plan/serveurs.yml | 20 ++++++ exemples/modeles/integral/README.md | 5 ++ .../inventories/production/group_vars/all.yml | 3 + .../modeles/integral/plan/applications.yml | 57 ++++++++++++++++ .../modeles/integral/plan/bases-donnees.yml | 32 +++++++++ exemples/modeles/integral/plan/domaines.yml | 7 ++ .../modeles/integral/plan/nomenclature.yml | 67 +++++++++++++++++++ exemples/modeles/integral/plan/serveurs.yml | 35 ++++++++++ exemples/modeles/observabilite/README.md | 5 ++ .../inventories/production/group_vars/all.yml | 3 + .../observabilite/plan/applications.yml | 36 ++++++++++ .../observabilite/plan/bases-donnees.yml | 16 +++++ .../modeles/observabilite/plan/domaines.yml | 7 ++ .../observabilite/plan/nomenclature.yml | 45 +++++++++++++ .../modeles/observabilite/plan/serveurs.yml | 23 +++++++ exemples/modeles/socle/README.md | 5 ++ .../inventories/production/group_vars/all.yml | 3 + exemples/modeles/socle/plan/applications.yml | 14 ++++ exemples/modeles/socle/plan/bases-donnees.yml | 3 + exemples/modeles/socle/plan/domaines.yml | 7 ++ exemples/modeles/socle/plan/nomenclature.yml | 26 +++++++ exemples/modeles/socle/plan/serveurs.yml | 14 ++++ 37 files changed, 656 insertions(+), 6 deletions(-) create mode 100644 exemples/modeles/forge/README.md create mode 100644 exemples/modeles/forge/inventories/production/group_vars/all.yml create mode 100644 exemples/modeles/forge/plan/applications.yml create mode 100644 exemples/modeles/forge/plan/bases-donnees.yml create mode 100644 exemples/modeles/forge/plan/domaines.yml create mode 100644 exemples/modeles/forge/plan/nomenclature.yml create mode 100644 exemples/modeles/forge/plan/serveurs.yml create mode 100644 exemples/modeles/identite/README.md create mode 100644 exemples/modeles/identite/inventories/production/group_vars/all.yml create mode 100644 exemples/modeles/identite/plan/applications.yml create mode 100644 exemples/modeles/identite/plan/bases-donnees.yml create mode 100644 exemples/modeles/identite/plan/domaines.yml create mode 100644 exemples/modeles/identite/plan/nomenclature.yml create mode 100644 exemples/modeles/identite/plan/serveurs.yml create mode 100644 exemples/modeles/integral/README.md create mode 100644 exemples/modeles/integral/inventories/production/group_vars/all.yml create mode 100644 exemples/modeles/integral/plan/applications.yml create mode 100644 exemples/modeles/integral/plan/bases-donnees.yml create mode 100644 exemples/modeles/integral/plan/domaines.yml create mode 100644 exemples/modeles/integral/plan/nomenclature.yml create mode 100644 exemples/modeles/integral/plan/serveurs.yml create mode 100644 exemples/modeles/observabilite/README.md create mode 100644 exemples/modeles/observabilite/inventories/production/group_vars/all.yml create mode 100644 exemples/modeles/observabilite/plan/applications.yml create mode 100644 exemples/modeles/observabilite/plan/bases-donnees.yml create mode 100644 exemples/modeles/observabilite/plan/domaines.yml create mode 100644 exemples/modeles/observabilite/plan/nomenclature.yml create mode 100644 exemples/modeles/observabilite/plan/serveurs.yml create mode 100644 exemples/modeles/socle/README.md create mode 100644 exemples/modeles/socle/inventories/production/group_vars/all.yml create mode 100644 exemples/modeles/socle/plan/applications.yml create mode 100644 exemples/modeles/socle/plan/bases-donnees.yml create mode 100644 exemples/modeles/socle/plan/domaines.yml create mode 100644 exemples/modeles/socle/plan/nomenclature.yml create mode 100644 exemples/modeles/socle/plan/serveurs.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dd9a54..45b3769 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ - **Découpage moteur/instance — Phase 1 : délier les rôles du domaine Chezlepro.** Introduction d'une variable d'identité d'instance **`domaine_interne`** (dans `inventories/*/group_vars/all.yml`). Les 13 rôles qui codaient `chezlepro.internal` en dur (zones DNS, FQDN, relais SMTP, AC, etc.) utilisent désormais `{{ domaine_interne }}` ; le `base_dn` LDAP et le domaine court sont **dérivés** (`dc={{ domaine_interne.split('.') | join(',dc=') }}` → `dc=chezlepro,dc=internal`, ou `dc=acme,dc=local` pour un autre loup). Comportement **identique** pour Chezlepro (qui pose `domaine_interne: chezlepro.internal`), mais le moteur devient générique — première brique pour partager l'outil à la meute (`docs/positionnement.md`). Ajout d'`exemples/instance.exemple.yml`. Non destructif : diff de génération vide, `ansible-lint` 0 échec. *(La marque `chezlepro` sur les noms de fichiers gérés — `99-chezlepro.conf`, `chezlepro_filter` — sera neutralisée en Phase 1b ; sortie du plan en Phase 2 ; deux dépôts en Phase 3.)* ### Ajouté -- **Catalogue de modèles d'écosystèmes prêts à déployer (`exemples/modeles/`).** Un hébergeur copie le modèle qui colle à son offre, le renseigne à ses couleurs (ou celles de son client) et instancie — plus besoin de démonstrateur. Structure **socle + modules + presets** : un socle souverain (DNS interne, AC/PKI, edge TLS, relais courriel) + des modules (web, identité, forge, observabilité, collaboration). Premier modèle livré et validé : **`presence-web`** (socle + web frontal/dorsal + données PostgreSQL/Redis, 7 VM) — la génération produit un écosystème complet et distinct (IPs `10.10.x`, **zéro fuite Chezlepro**). `.ansible-lint` exclut `exemples/`. Remplace l'instance d'essai jetable. +- **Catalogue de modèles d'écosystèmes prêts à déployer (`exemples/modeles/`).** Un hébergeur copie le modèle qui colle à son offre, le renseigne à ses couleurs (ou celles de son client) et instancie — plus besoin de démonstrateur. Structure **socle + modules + presets** : un socle souverain (DNS interne, AC/PKI, edge TLS, relais courriel) + des modules (web, identité, forge, observabilité, collaboration). Modèles livrés et validés (chacun génère un écosystème distinct, **zéro fuite Chezlepro**, IPs `10.10.x`) : **`socle`** (4 VM), **`presence-web`** (7), **`forge`** (6), **`identite`** (LDAP+Keycloak, 6), **`observabilite`** (Prometheus/Loki/Grafana+Icinga, 7), **`integral`** (11). **`collaboration`** (Nextcloud/Collabora) reste à construire (rôles non implémentés). `.ansible-lint` exclut `exemples/`. Remplace l'instance d'essai jetable. - **`docs/positionnement.md` — décision de positionnement vs l'existant.** Acte que le cœur de Set-OPS (plan déclaratif → génération d'inventaire) recoupe **NetBox/Nautobot** (+ `nb_inventory`), le GUI d'exécution recoupe **AWX/Semaphore**, le « la définition instancie la flotte » recoupe **NixOS+Colmena / Terraform**, et le modèle application-pivot recoupe **Backstage**. Décision en vigueur : on **garde** le plan de contrôle maison (souverain, bien dimensionné pour ~13 VM) mais on **gèle son périmètre** ; seuils explicites d'adoption de l'outil mûr (RBAC/audit → AWX ; IPAM/source de vérité partagée → NetBox). Règle ancrée dans `AGENTS.md`. - **Documentation — passe complète (le dépôt « dit ce qu'il fait »).** Nouveau guide central **`docs/plan-et-generation.md`** : le modèle (entités + liens), les registres et leurs schémas, la référence des commandes `make`/CLI et des vues GUI, le flux « éditer le plan → `instancier` → appliquer », les garde-fous. `AGENTS.md` gagne la section « Le plan et la génération de l'inventaire » (règle d'or : `hosts.yml` est généré, ne pas l'éditer). `README.md` : section « Le plan : on édite, l'inventaire se génère » + remplacement du flux legacy `hote-planifier`/`ajouter` par le flux par le plan. Rafraîchissement de `docs/architecture-set-ops.md` (entités du plan), `docs/nomenclature-vm.md` et `docs/catalogue-services.md` ; correction de la terminologie **domaine → fonction** dans la prose (collision avec le DNS levée jusque dans la doc). diff --git a/exemples/modeles/README.md b/exemples/modeles/README.md index 9ad45cf..06908ad 100644 --- a/exemples/modeles/README.md +++ b/exemples/modeles/README.md @@ -18,10 +18,10 @@ courriel) et ajoute des **modules** selon l'offre. | Modèle | = socle + | État | | --- | --- | --- | -| `socle` | (rien) | à venir | +| `socle` | (rien) | ✅ | | **`presence-web`** | web (frontal+dorsal) + données (PostgreSQL/Redis) | ✅ | -| `forge` | Forgejo + données | à venir | -| `identite` | LDAP + Keycloak (SSO) | à venir | -| `observabilite` | Prometheus/Loki/Grafana + Icinga | à venir | +| `forge` | Forgejo + données | ✅ | +| `identite` | LDAP + Keycloak (SSO) | ✅ | +| `observabilite` | Prometheus/Loki/Grafana + Icinga | ✅ | | `collaboration` | Nextcloud + Collabora | rôles à construire | -| `integral` | tout | à venir | +| `integral` | tout | ✅ | diff --git a/exemples/modeles/forge/README.md b/exemples/modeles/forge/README.md new file mode 100644 index 0000000..692ed96 --- /dev/null +++ b/exemples/modeles/forge/README.md @@ -0,0 +1,5 @@ +# Modele : forge + +Forge Git souveraine : socle + Forgejo + PostgreSQL. + +6 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). diff --git a/exemples/modeles/forge/inventories/production/group_vars/all.yml b/exemples/modeles/forge/inventories/production/group_vars/all.yml new file mode 100644 index 0000000..92ed206 --- /dev/null +++ b/exemples/modeles/forge/inventories/production/group_vars/all.yml @@ -0,0 +1,3 @@ +--- +domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/forge/plan/applications.yml b/exemples/modeles/forge/plan/applications.yml new file mode 100644 index 0000000..9484e0b --- /dev/null +++ b/exemples/modeles/forge/plan/applications.yml @@ -0,0 +1,24 @@ +--- +applications: + step_ca: + groupe: serveur_step_ca + hote: infra-pki-01 + nginx: + groupe: serveur_nginx + hote: infra-edge-01 + sendmail: + groupe: serveur_sendmail + 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 diff --git a/exemples/modeles/forge/plan/bases-donnees.yml b/exemples/modeles/forge/plan/bases-donnees.yml new file mode 100644 index 0000000..832512e --- /dev/null +++ b/exemples/modeles/forge/plan/bases-donnees.yml @@ -0,0 +1,16 @@ +--- +serveurs_bd: + pg-principal: + type: postgres + hote: 10.10.13.11 + port: 5432 + groupe: serveur_postgresql +bases_donnees: + forgejo: + serveur: pg-principal + 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 new file mode 100644 index 0000000..367ea72 --- /dev/null +++ b/exemples/modeles/forge/plan/domaines.yml @@ -0,0 +1,7 @@ +--- +domaines_publics: + exemple.ca: + autorite: primaire-cache + edge: serveur_nginx + secondaires: [] + dnssec: false diff --git a/exemples/modeles/forge/plan/nomenclature.yml b/exemples/modeles/forge/plan/nomenclature.yml new file mode 100644 index 0000000..7fe9d89 --- /dev/null +++ b/exemples/modeles/forge/plan/nomenclature.yml @@ -0,0 +1,42 @@ +--- +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: + 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 diff --git a/exemples/modeles/forge/plan/serveurs.yml b/exemples/modeles/forge/plan/serveurs.yml new file mode 100644 index 0000000..a27aa02 --- /dev/null +++ b/exemples/modeles/forge/plan/serveurs.yml @@ -0,0 +1,20 @@ +--- +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 diff --git a/exemples/modeles/identite/README.md b/exemples/modeles/identite/README.md new file mode 100644 index 0000000..862bd44 --- /dev/null +++ b/exemples/modeles/identite/README.md @@ -0,0 +1,5 @@ +# Modele : identite + +Identite centralisee : socle + LDAP + Keycloak (SSO) + PostgreSQL. + +6 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). diff --git a/exemples/modeles/identite/inventories/production/group_vars/all.yml b/exemples/modeles/identite/inventories/production/group_vars/all.yml new file mode 100644 index 0000000..92ed206 --- /dev/null +++ b/exemples/modeles/identite/inventories/production/group_vars/all.yml @@ -0,0 +1,3 @@ +--- +domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/identite/plan/applications.yml b/exemples/modeles/identite/plan/applications.yml new file mode 100644 index 0000000..ac404e3 --- /dev/null +++ b/exemples/modeles/identite/plan/applications.yml @@ -0,0 +1,27 @@ +--- +applications: + step_ca: + groupe: serveur_step_ca + hote: infra-pki-01 + nginx: + groupe: serveur_nginx + hote: infra-edge-01 + sendmail: + groupe: serveur_sendmail + 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 + keycloak: + groupe: serveur_keycloak + hote: idm-01 + port: 8080 + expose: + - auth.exemple.ca diff --git a/exemples/modeles/identite/plan/bases-donnees.yml b/exemples/modeles/identite/plan/bases-donnees.yml new file mode 100644 index 0000000..4abebf3 --- /dev/null +++ b/exemples/modeles/identite/plan/bases-donnees.yml @@ -0,0 +1,16 @@ +--- +serveurs_bd: + pg-principal: + type: postgres + hote: 10.10.13.11 + port: 5432 + groupe: serveur_postgresql +bases_donnees: + keycloak: + serveur: pg-principal + 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 new file mode 100644 index 0000000..367ea72 --- /dev/null +++ b/exemples/modeles/identite/plan/domaines.yml @@ -0,0 +1,7 @@ +--- +domaines_publics: + exemple.ca: + autorite: primaire-cache + edge: serveur_nginx + secondaires: [] + dnssec: false diff --git a/exemples/modeles/identite/plan/nomenclature.yml b/exemples/modeles/identite/plan/nomenclature.yml new file mode 100644 index 0000000..8c0bd06 --- /dev/null +++ b/exemples/modeles/identite/plan/nomenclature.yml @@ -0,0 +1,42 @@ +--- +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 + 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 +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 diff --git a/exemples/modeles/identite/plan/serveurs.yml b/exemples/modeles/identite/plan/serveurs.yml new file mode 100644 index 0000000..2dee340 --- /dev/null +++ b/exemples/modeles/identite/plan/serveurs.yml @@ -0,0 +1,20 @@ +--- +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 diff --git a/exemples/modeles/integral/README.md b/exemples/modeles/integral/README.md new file mode 100644 index 0000000..c33e984 --- /dev/null +++ b/exemples/modeles/integral/README.md @@ -0,0 +1,5 @@ +# Modele : integral + +Ecosysteme integral (services implementes) : socle + donnees + identite + forge + observabilite + web. + +11 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). diff --git a/exemples/modeles/integral/inventories/production/group_vars/all.yml b/exemples/modeles/integral/inventories/production/group_vars/all.yml new file mode 100644 index 0000000..92ed206 --- /dev/null +++ b/exemples/modeles/integral/inventories/production/group_vars/all.yml @@ -0,0 +1,3 @@ +--- +domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/integral/plan/applications.yml b/exemples/modeles/integral/plan/applications.yml new file mode 100644 index 0000000..ce6256e --- /dev/null +++ b/exemples/modeles/integral/plan/applications.yml @@ -0,0 +1,57 @@ +--- +applications: + step_ca: + groupe: serveur_step_ca + hote: infra-pki-01 + nginx: + groupe: serveur_nginx + hote: infra-edge-01 + sendmail: + groupe: serveur_sendmail + 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 + openldap: + groupe: serveur_openldap + hote: idm-01 + keycloak: + groupe: serveur_keycloak + hote: idm-01 + port: 8080 + expose: + - auth.exemple.ca + forgejo: + groupe: serveur_forgejo + hote: forge-01 + port: 3000 + expose: + - forge.exemple.ca + 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 + web_frontal: + groupe: serveur_web_frontal + hote: web-frontal-01 + web_dorsal: + groupe: serveur_web_dorsal + hote: web-dorsal-01 diff --git a/exemples/modeles/integral/plan/bases-donnees.yml b/exemples/modeles/integral/plan/bases-donnees.yml new file mode 100644 index 0000000..a816f74 --- /dev/null +++ b/exemples/modeles/integral/plan/bases-donnees.yml @@ -0,0 +1,32 @@ +--- +serveurs_bd: + pg-principal: + type: postgres + hote: 10.10.13.11 + port: 5432 + groupe: serveur_postgresql +bases_donnees: + keycloak: + serveur: pg-principal + base: keycloak + proprietaire: keycloak + secret: vault_bd_keycloak + consommateur: serveur_keycloak + portee: groupe + usage: principale + forgejo: + serveur: pg-principal + base: forgejo + proprietaire: forgejo + secret: vault_bd_forgejo + consommateur: serveur_forgejo + portee: groupe + usage: principale + icingadb: + serveur: pg-principal + base: icingadb + proprietaire: icingadb + secret: vault_bd_icingadb + consommateur: serveur_icinga + portee: groupe + usage: principale diff --git a/exemples/modeles/integral/plan/domaines.yml b/exemples/modeles/integral/plan/domaines.yml new file mode 100644 index 0000000..367ea72 --- /dev/null +++ b/exemples/modeles/integral/plan/domaines.yml @@ -0,0 +1,7 @@ +--- +domaines_publics: + exemple.ca: + autorite: primaire-cache + edge: serveur_nginx + secondaires: [] + dnssec: false diff --git a/exemples/modeles/integral/plan/nomenclature.yml b/exemples/modeles/integral/plan/nomenclature.yml new file mode 100644 index 0000000..45f4c60 --- /dev/null +++ b/exemples/modeles/integral/plan/nomenclature.yml @@ -0,0 +1,67 @@ +--- +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 + 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 + 4: + libelle: Observabilite + vlan: 14 + sous_reseau: 10.10.14.0/24 + passerelle: 10.10.14.1 + 5: + libelle: Applications + vlan: 15 + sous_reseau: 10.10.15.0/24 + passerelle: 10.10.15.1 +fonctions: + data: + categorie: 3 + service: 1 + forge: + categorie: 5 + 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 + mon: + categorie: 4 + service: 4 + obs: + categorie: 4 + service: 1 + web-dorsal: + categorie: 5 + service: 4 + web-frontal: + categorie: 5 + service: 3 diff --git a/exemples/modeles/integral/plan/serveurs.yml b/exemples/modeles/integral/plan/serveurs.yml new file mode 100644 index 0000000..6e038f3 --- /dev/null +++ b/exemples/modeles/integral/plan/serveurs.yml @@ -0,0 +1,35 @@ +--- +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 + forge-01: + fonction: forge + etat: planifie + obs-01: + fonction: obs + etat: planifie + mon-01: + fonction: mon + etat: planifie + web-frontal-01: + fonction: web-frontal + etat: planifie + web-dorsal-01: + fonction: web-dorsal + etat: planifie diff --git a/exemples/modeles/observabilite/README.md b/exemples/modeles/observabilite/README.md new file mode 100644 index 0000000..91c0434 --- /dev/null +++ b/exemples/modeles/observabilite/README.md @@ -0,0 +1,5 @@ +# Modele : observabilite + +Observabilite & supervision : socle + Prometheus/Loki/Grafana + Icinga. + +7 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). diff --git a/exemples/modeles/observabilite/inventories/production/group_vars/all.yml b/exemples/modeles/observabilite/inventories/production/group_vars/all.yml new file mode 100644 index 0000000..92ed206 --- /dev/null +++ b/exemples/modeles/observabilite/inventories/production/group_vars/all.yml @@ -0,0 +1,3 @@ +--- +domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/observabilite/plan/applications.yml b/exemples/modeles/observabilite/plan/applications.yml new file mode 100644 index 0000000..398a4f7 --- /dev/null +++ b/exemples/modeles/observabilite/plan/applications.yml @@ -0,0 +1,36 @@ +--- +applications: + step_ca: + groupe: serveur_step_ca + hote: infra-pki-01 + nginx: + groupe: serveur_nginx + hote: infra-edge-01 + sendmail: + groupe: serveur_sendmail + 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 diff --git a/exemples/modeles/observabilite/plan/bases-donnees.yml b/exemples/modeles/observabilite/plan/bases-donnees.yml new file mode 100644 index 0000000..50c2ee7 --- /dev/null +++ b/exemples/modeles/observabilite/plan/bases-donnees.yml @@ -0,0 +1,16 @@ +--- +serveurs_bd: + pg-principal: + type: postgres + hote: 10.10.13.11 + port: 5432 + groupe: serveur_postgresql +bases_donnees: + icingadb: + serveur: pg-principal + 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 new file mode 100644 index 0000000..367ea72 --- /dev/null +++ b/exemples/modeles/observabilite/plan/domaines.yml @@ -0,0 +1,7 @@ +--- +domaines_publics: + exemple.ca: + autorite: primaire-cache + edge: serveur_nginx + secondaires: [] + dnssec: false diff --git a/exemples/modeles/observabilite/plan/nomenclature.yml b/exemples/modeles/observabilite/plan/nomenclature.yml new file mode 100644 index 0000000..49abd61 --- /dev/null +++ b/exemples/modeles/observabilite/plan/nomenclature.yml @@ -0,0 +1,45 @@ +--- +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 + 4: + libelle: Observabilite + vlan: 14 + sous_reseau: 10.10.14.0/24 + passerelle: 10.10.14.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 diff --git a/exemples/modeles/observabilite/plan/serveurs.yml b/exemples/modeles/observabilite/plan/serveurs.yml new file mode 100644 index 0000000..a677903 --- /dev/null +++ b/exemples/modeles/observabilite/plan/serveurs.yml @@ -0,0 +1,23 @@ +--- +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 diff --git a/exemples/modeles/socle/README.md b/exemples/modeles/socle/README.md new file mode 100644 index 0000000..19eda35 --- /dev/null +++ b/exemples/modeles/socle/README.md @@ -0,0 +1,5 @@ +# Modele : socle + +Socle souverain : DNS interne, AC/PKI, edge TLS, relais courriel. + +4 VM. Renseignez `domaine_interne`, `plan/domaines.yml` et `plan/nomenclature.yml` (supernet), puis generez (voir `exemples/modeles/README.md`). diff --git a/exemples/modeles/socle/inventories/production/group_vars/all.yml b/exemples/modeles/socle/inventories/production/group_vars/all.yml new file mode 100644 index 0000000..92ed206 --- /dev/null +++ b/exemples/modeles/socle/inventories/production/group_vars/all.yml @@ -0,0 +1,3 @@ +--- +domaine_interne: "exemple.internal" # <- VOTRE domaine DNS interne +setops_plan_dir: "{{ playbook_dir }}/../../instance/plan" diff --git a/exemples/modeles/socle/plan/applications.yml b/exemples/modeles/socle/plan/applications.yml new file mode 100644 index 0000000..c78c0b2 --- /dev/null +++ b/exemples/modeles/socle/plan/applications.yml @@ -0,0 +1,14 @@ +--- +applications: + step_ca: + groupe: serveur_step_ca + hote: infra-pki-01 + nginx: + groupe: serveur_nginx + hote: infra-edge-01 + sendmail: + groupe: serveur_sendmail + hote: infra-mail-01 + powerdns: + groupe: serveur_powerdns + hote: infra-dns-01 diff --git a/exemples/modeles/socle/plan/bases-donnees.yml b/exemples/modeles/socle/plan/bases-donnees.yml new file mode 100644 index 0000000..60ca194 --- /dev/null +++ b/exemples/modeles/socle/plan/bases-donnees.yml @@ -0,0 +1,3 @@ +--- +serveurs_bd: {} +bases_donnees: {} diff --git a/exemples/modeles/socle/plan/domaines.yml b/exemples/modeles/socle/plan/domaines.yml new file mode 100644 index 0000000..367ea72 --- /dev/null +++ b/exemples/modeles/socle/plan/domaines.yml @@ -0,0 +1,7 @@ +--- +domaines_publics: + exemple.ca: + autorite: primaire-cache + edge: serveur_nginx + secondaires: [] + dnssec: false diff --git a/exemples/modeles/socle/plan/nomenclature.yml b/exemples/modeles/socle/plan/nomenclature.yml new file mode 100644 index 0000000..5b5d735 --- /dev/null +++ b/exemples/modeles/socle/plan/nomenclature.yml @@ -0,0 +1,26 @@ +--- +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 +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 diff --git a/exemples/modeles/socle/plan/serveurs.yml b/exemples/modeles/socle/plan/serveurs.yml new file mode 100644 index 0000000..123d180 --- /dev/null +++ b/exemples/modeles/socle/plan/serveurs.yml @@ -0,0 +1,14 @@ +--- +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