diff --git a/CHANGELOG.md b/CHANGELOG.md index 92b1d13..c78c07e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Modifié - **Consolidation minimale post-diagnostic (ménage documentaire, sans risque).** Suite à une relecture à froid « auteur » de l'état réel du dépôt. (1) **En-tête généré rafraîchi** : `instance/inventories/production/hosts.yml` pointait encore vers l'ancienne source `docs/` ; régénéré via `instancier-appliquer` (diff sémantique **vide** — contenu inchangé, seul l'en-tête a bougé ; commité côté instance `OPS-Chezlepro`). (2) **`docs/catalogue-services.md`** : nouvelle section **« État d'implémentation des rôles »** qui distingue sans ambiguïté les rôles **implémentés** (validés *en tant que code*, **non éprouvés en prod**), les **échafaudages** (playbooks-ancres `debug` sans rôle : `serveur_nextcloud`, `serveur_collabora`, `client_supervision`, `serveur_web_frontal`, `serveur_web_dorsal`) et les **rôles-catégories inertes** (`applications`, `backup`, `database`, `identity`, `monitoring`, `proxmox`, `storage`, `web` — vestiges d'un regroupement par catégorie abandonné, l'architecture réelle étant plate `serveur_*`/`client_*`) ; colonnes « Rôle futur » → « Rôle ». (3) **`docs/vm-lifecycle.md` §8** : flux de déploiement réaligné sur le plan (`instancier-appliquer` puis `deployer`) au lieu de la commande supplantée `hote-ajouter`. Vérifié : `make verifier` (exit 0), `ansible-lint` 0 échec. **Non touché à dessein** : les références `instance/inventories/lab/` des docs de template sont **correctes** (contexte golden template, distinct de `production`) ; le bas du `README.md` (« Premier chantier »/« Principe ») est daté mais **exact** (template = socle), donc laissé tel quel pour éviter le churn. - **`creer-vm` enfin piloté par le plan — couture « inventaire → création VM » fermée (étape 4 du diagnostic).** `make creer-vm HOTE=` ne prend plus qu'**un argument** : il **lit VMID/IP/CIDR/passerelle/VLAN/stockage/disque/nœud directement dans l'inventaire généré** (comme `deployer` lit ses groupes) au lieu de les redemander à la main, et **n'écrit plus** dans l'inventaire (l'appel à `hote-ajouter` est supprimé — l'hôte est déjà présent via le plan). Repli sur le nœud par défaut de `config` si `proxmox_noeud` absent. Les 3 cibles legacy `hote-ajouter` / `hote-planifier` / `hote-groupes` (qui éditaient l'inventaire généré à la main — anti-pattern) sont **neutralisées** : refus explicite renvoyant vers `serveurs.yml` + `instancier-appliquer`. `aide` et docs (`README`, `QUICKSTART`, `procedure-template-debian13-proxmox`) alignées sur `creer-vm HOTE=…`. La chaîne déclarative est désormais **continue** : `plan → instancier-appliquer → creer-vm HOTE → (activer) → deployer HOTE`. Activation laissée **manuelle** (édit du plan, par décision). Vérifié : `make verifier` exit 0 (dont 4 tests unitaires), extraction testée sur l'inventaire réel (`data-01` avec nœud, `collab-01` sans nœud → repli), chemins de refus (HOTE vide, hôte absent, cibles legacy) exit 2. *(Clonage réel non exécuté : exige Proxmox — c'est la preuve VM, étape suivante.)* +- **Neutralisation complète pour partage public (« 100 % neutre »).** Préparation au don public du moteur : suppression de **toute** trace Chezlepro de l'**outil** (rôles, scripts, docs publiques, exemples, LICENSE) — prouvée par scan exhaustif (`git grep` revient **vide** pour `chezlepro`, pour `asgard`/`TrueNAS`, et pour le supernet réel `10.1.x`). Corrigés au passage **5 défauts de généricité fonctionnels** qui auraient déployé du Chezlepro chez tout hébergeur : `roles/motd/templates/motd.j2` (« Système Chezlepro » → `{{ domaine_interne | default('Set-OPS') }}`), `serveur_forgejo` (`APP_NAME`), `serveur_openldap` (organisation par défaut), `serveur_step_ca` (nom d'AC par défaut), et surtout les **IP réelles codées en dur dans les `defaults`** de plusieurs rôles (`db_host`, `loki_url`, `reseaux_autorises` → plage d'exemple `10.0.x`). Noms de tâches/playbooks et exemples de README généricisés ; marqueurs de fichiers gérés alignés sur `setops` (READMEs en retard) ; placeholder GUI neutralisé. **LICENSE : copyright → Alliance Boréale.** Fichiers **mainteneur** (`AGENTS.md`, `CLAUDE.md`, `SOLUTION.md`, doc Codex) et `CHANGELOG` conservés (couche gouvernance/historique — peuvent nommer Chezlepro, par décision). L'instance `OPS-Chezlepro` **surcharge déjà** ses vraies valeurs de topologie dans ses `group_vars` : la séparation moteur/instance tient, le changement des `defaults` ne casse pas Chezlepro (seule `client_journal_loki_url` reste à surcharger côté instance). Vérifié : `make verifier` exit 0 (4 tests), 42 fichiers, scans de fuite **vides**. ### Ajouté - **Sous-commande `inventory_host.py parametres-proxmox --hote X`** : émet, machine-lisible (`SETOPS_*='valeur'`), les paramètres de clonage Proxmox d'un hôte lus dans l'inventaire généré ; refuse si l'hôte est absent ou s'il manque un champ requis (VMID/IP/CIDR/passerelle/VLAN). Consommée par `make creer-vm`. **Premier test stdlib du dépôt** `scripts/tests/test_inventory_host.py` (sans pytest) + cible **`make test`**, câblée dans `make verifier`. diff --git a/LICENSE b/LICENSE index 833cbb9..26dd674 100644 --- a/LICENSE +++ b/LICENSE @@ -220,7 +220,7 @@ If you develop a new program, and you want it to be of the greatest possible use To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Set-OPS - Copyright (C) 2026 Chezlepro + Copyright (C) 2026 Alliance Boréale This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. diff --git a/Makefile b/Makefile index 7ee2564..27a5034 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,7 @@ aide: @printf '%s\n' ' Creer une VM (VMID/IP/VLAN/passerelle lus dans le plan):' @printf '%s\n' ' make creer-vm HOTE=web-frontal-01' @printf '%s\n' ' Cloner seulement, sans passer par le plan:' - @printf '%s\n' ' make cloner-vm HOTE=web-frontal-01 VMID=95301 VLAN=15 ADRESSE_IP=10.1.15.31 PASSERELLE=10.1.15.1' + @printf '%s\n' ' make cloner-vm HOTE=web-frontal-01 VMID=95301 VLAN=15 ADRESSE_IP=10.0.2.31 PASSERELLE=10.0.2.1' @printf '%s\n' ' Configurer Proxmox et le Vault API:' @printf '%s\n' ' make config' @printf '%s\n' '' @@ -148,7 +148,7 @@ aide: @printf '%s\n' '' @printf '%s\n' 'Variables frequentes' @printf '%s\n' ' HOTE=web-frontal-01 GROUPE=serveur_debian GROUPES="serveur_debian serveur_durci"' - @printf '%s\n' ' VMID=95301 VLAN=15 ADRESSE_IP=10.1.15.31 PASSERELLE=10.1.15.1' + @printf '%s\n' ' VMID=95301 VLAN=15 ADRESSE_IP=10.0.2.31 PASSERELLE=10.0.2.1' @printf '%s\n' ' FICHIER_INVENTAIRE=$(SETOPS_INSTANCE)/inventories/production/hosts.yml FICHIER_DEPENDANCES=docs/dependances-groupes.yml CONFIRMER=true' .PHONY: lint diff --git a/README.md b/README.md index a54a42a..6ec9a8f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ **Set-OPS est un moteur Ansible générique** qui permet à un hébergeur de **construire et exploiter un écosystème numérique souverain** — DNS interne, AC/PKI, identité (LDAP + SSO), relais courriel, bases de données, observabilité, applications — sur sa propre grappe **Proxmox**, à partir d'un **plan déclaratif**. -Le dépôt est le **moteur** (générique, partageable). Chaque déploiement réel est une **instance** (le plan + l'inventaire d'un hébergeur, dans son propre dépôt). Chezlepro en est une ; tu crées la tienne à partir d'un **modèle prêt à déployer** (`exemples/modeles/`). +Le dépôt est le **moteur** (générique, partageable). Chaque déploiement réel est une **instance** (le plan + l'inventaire d'un hébergeur, dans son propre dépôt). Tu crées la tienne à partir d'un **modèle prêt à déployer** (`exemples/modeles/`). > 👉 **Tu débarques avec une grappe Proxmox et tu veux monter ton écosystème ? Commence par [`QUICKSTART.md`](QUICKSTART.md).** @@ -12,7 +12,7 @@ Le dépôt est le **moteur** (générique, partageable). Chaque déploiement ré ## Mission (la vision derrière l'outil) -`Set-OPS` ne se limite plus à l'exploitation : il **définit et construit l'écosystème numérique souverain de Chezlepro Inc.** — une infrastructure interne auto-suffisante, sans dépendance SaaS, décrite en code et pilotée par des registres machine-lisibles qui font office de **source unique de vérité** (`instance/plan/serveurs.yml`, `instance/plan/applications.yml`, `instance/plan/bases-donnees.yml`, `instance/plan/domaines.yml`, `instance/plan/nomenclature.yml`, `docs/dependances-groupes.yml`). +`Set-OPS` ne se limite plus à l'exploitation : il **définit et construit un écosystème numérique souverain** — une infrastructure interne auto-suffisante, sans dépendance SaaS, décrite en code et pilotée par des registres machine-lisibles qui font office de **source unique de vérité** (`instance/plan/serveurs.yml`, `instance/plan/applications.yml`, `instance/plan/bases-donnees.yml`, `instance/plan/domaines.yml`, `instance/plan/nomenclature.yml`, `docs/dependances-groupes.yml`). Piliers de l'écosystème : diff --git a/docs/architecture-set-ops.md b/docs/architecture-set-ops.md index c316d7e..1d6e4a5 100644 --- a/docs/architecture-set-ops.md +++ b/docs/architecture-set-ops.md @@ -1,6 +1,6 @@ # Architecture Set-OPS -Set-OPS définit et construit l'écosystème numérique souverain de Chezlepro. Il se +Set-OPS définit et construit l'écosystème numérique souverain. Il se pilote par un **plan** : l'inventaire Ansible (`instance/inventories/production/hosts.yml`) est **généré** depuis le plan, pas édité à la main. @@ -51,7 +51,7 @@ Les groupes structurels ou vides peuvent exister, mais un groupe assigné à une ## Cycle de vie VM -Le cycle de vie des VM Chezlepro est documenté dans : +Le cycle de vie des VM est documenté dans : ```text docs/vm-lifecycle.md diff --git a/docs/catalogue-services.md b/docs/catalogue-services.md index 4ee3abd..c43e548 100644 --- a/docs/catalogue-services.md +++ b/docs/catalogue-services.md @@ -1,4 +1,4 @@ -# Catalogue des services Chezlepro +# Catalogue des services Ce document fixe les noms de groupes et de playbooks pour les prochains services. diff --git a/docs/dns-interne.md b/docs/dns-interne.md index 65c9dad..9b5bc20 100644 --- a/docs/dns-interne.md +++ b/docs/dns-interne.md @@ -1,4 +1,4 @@ -# DNS interne Chezlepro +# DNS interne Le service DNS interne est la premiere capacite de plateforme. @@ -16,7 +16,7 @@ client_dns -> integration cliente DNS La zone initiale est : ```text -chezlepro.internal +exemple.internal ``` Elle est definie dans : @@ -39,8 +39,8 @@ ansible_host defini Exemple : ```text -web-frontal-01 ansible_host=10.1.15.31 --> web-frontal-01.chezlepro.internal A 10.1.15.31 +web-frontal-01 ansible_host=10.0.2.31 +-> web-frontal-01.exemple.internal A 10.0.2.31 ``` Les enregistrements additionnels explicites sont dans `serveur_powerdns_records`. @@ -83,8 +83,8 @@ Les premiers checks utiles : - service `pdns` actif ; - port UDP/TCP 53 disponible ; -- SOA de `chezlepro.internal` resoluble ; -- enregistrement `ns1.chezlepro.internal` resoluble ; +- SOA de `exemple.internal` resoluble ; +- enregistrement `ns1.exemple.internal` resoluble ; - enregistrements des hotes actifs presents ; - serial de zone attendu ; - latence de resolution. diff --git a/docs/modeles_vm/debian13-proxmox.md b/docs/modeles_vm/debian13-proxmox.md index eb4bb96..1495191 100644 --- a/docs/modeles_vm/debian13-proxmox.md +++ b/docs/modeles_vm/debian13-proxmox.md @@ -2,7 +2,7 @@ ## Objet -Ce document justifie les ajouts appliqués par Set-OPS à une installation Debian 13 minimale pour obtenir le golden template Proxmox de Chezlepro. +Ce document justifie les ajouts appliqués par Set-OPS à une installation Debian 13 minimale pour obtenir le golden template Proxmox. Le template doit rester un socle commun, clonable et sécuritaire. Il ne doit pas devenir un serveur applicatif ni intégrer des dépendances propres à un rôle final. @@ -35,7 +35,7 @@ aucune donnée propre à un clone final ### Objectif -Le playbook `debian13_proxmox_preparer.yml` transforme une VM Debian 13 minimale en socle golden template Chezlepro. +Le playbook `debian13_proxmox_preparer.yml` transforme une VM Debian 13 minimale en socle golden template. Il installe les composants communs, configure l'accès Ansible, applique le durcissement template-safe et prépare la VM pour cloud-init. @@ -61,7 +61,7 @@ VM destinée à devenir un template, pas un serveur de production Vérifications utiles depuis le poste Ansible : ```bash -ssh ansible@10.1.99.99 +ssh ansible@10.0.2.99 ansible -i instance/inventories/lab/hosts.yml modeles_vm -m ping ansible -i instance/inventories/lab/hosts.yml modeles_vm -m setup ``` @@ -194,7 +194,7 @@ nftables_socle | `chrony` | Installe et active la synchronisation du temps. | Un temps correct est nécessaire pour TLS, journaux, audit, Kerberos/LDAP futur, monitoring et corrélation d'incidents. | La source NTP définitive peut être ajustée plus tard par inventaire. | | `ssh_baseline` | Pose la base SSH : root interdit, clé publique obligatoire, mot de passe désactivé. | Force un accès administrateur par clé dès la construction du template. | Cloud-init doit avoir injecté le `ciuser` et sa clé avant Ansible. | | `systemd_ssh_auto` | Désactive le comportement `systemd.ssh_auto` si demandé. | Évite une exposition SSH automatique via mécanismes transitoires non désirés dans un template serveur. | Ne remplace pas la politique SSH principale. | -| `motd` | Déploie un message d'accueil sobre. | Identifie le contexte Chezlepro et rappelle que la machine est gérée par Set-OPS. | Ne doit pas contenir d'information sensible. | +| `motd` | Déploie un message d'accueil sobre. | Identifie le contexte de l_instance et rappelle que la machine est gérée par Set-OPS. | Ne doit pas contenir d'information sensible. | | `hardening_packages` | Installe les paquets de sécurité communs. | Fournit les briques nécessaires au durcissement sans configurer de service applicatif. | Les politiques strictes par rôle restent appliquées sur les clones. | | `sysctl_durcissement` | Applique des paramètres noyau de sécurité. | Réduit des comportements réseau et noyau risqués avec des réglages standards pour serveur Linux. | Les réglages spécifiques à une charge de travail peuvent être ajustés par rôle. | | `core_dumps` | Désactive les core dumps. | Limite le risque de fuite de secrets ou données sensibles dans des dumps mémoire. | Un serveur de debug peut réactiver un comportement adapté hors template. | diff --git a/docs/nomenclature-vm.md b/docs/nomenclature-vm.md index 712b6f2..267989a 100644 --- a/docs/nomenclature-vm.md +++ b/docs/nomenclature-vm.md @@ -71,17 +71,17 @@ Les groupes restent fins et composables. La cohabitation se fait en associant pl ## Plan d'adressage interne -Réseau interne unique : `10.1.0.0/16`. Segmentation par fonction, un `/24` et un VLAN par catégorie, **3ᵉ octet = VLAN** (L2 alignée sur L3). +Réseau interne unique : `10.0.0.0/16`. Segmentation par fonction, un `/24` et un VLAN par catégorie, **3ᵉ octet = VLAN** (L2 alignée sur L3). | Catégorie | VLAN | Sous-réseau | Passerelle | | --- | --- | --- | --- | -| 1 — Fondations / infra | 11 | `10.1.11.0/24` | `10.1.11.1` | -| 2 — Identité | 12 | `10.1.12.0/24` | `10.1.12.1` | -| 3 — Données | 13 | `10.1.13.0/24` | `10.1.13.1` | -| 4 — Observabilité | 14 | `10.1.14.0/24` | `10.1.14.1` | -| 5 — Applications | 15 | `10.1.15.0/24` | `10.1.15.1` | +| 1 — Fondations / infra | 11 | `10.0.11.0/24` | `10.0.11.1` | +| 2 — Identité | 12 | `10.0.12.0/24` | `10.0.12.1` | +| 3 — Données | 13 | `10.0.13.0/24` | `10.0.13.1` | +| 4 — Observabilité | 14 | `10.0.14.0/24` | `10.0.14.1` | +| 5 — Applications | 15 | `10.0.15.0/24` | `10.0.15.1` | -Adresse d'hôte (4ᵉ octet) : **`service × 10 + NN`**. `.1` = passerelle ; `.2`–`.9` réservés. Exemple : `web-dorsal-01` (catégorie 5, service 4, NN 01) → `10.1.15.41`. +Adresse d'hôte (4ᵉ octet) : **`service × 10 + NN`**. `.1` = passerelle ; `.2`–`.9` réservés. Exemple : `web-dorsal-01` (catégorie 5, service 4, NN 01) → `10.0.15.41`. Tout se dérive de la fonction de l'hôte, et la source unique machine-lisible est **`instance/plan/nomenclature.yml`** : @@ -89,14 +89,14 @@ Tout se dérive de la fonction de l'hôte, et la source unique machine-lisible e hostname = - VMID = 9 · catégorie · service · NN VLAN = catégorie.vlan -IP = 10.1..(service × 10 + NN) +IP = 10.0..(service × 10 + NN) ``` `make inventaire-ui` lit ce registre et **propose** automatiquement VMID, VLAN, IP et passerelle quand on nomme un hôte. La sécurité entre zones se fera par règles inter-zones (nftables / edge), pas par l'adressage. Contrainte : `NN` de 01 à 09 par fonction (l'octet hôte reste dans le bloc du service). Au-delà, ouvrir une nouvelle fonction/service dans `instance/plan/nomenclature.yml`. -La segmentation `10.1.0.0/16` remplace l'ancienne plage d'essais `192.168.12.x`. +La segmentation `10.0.0.0/16` remplace l'ancienne plage d'essais `192.168.12.x`. ## Variables de provisioning d'hôte diff --git a/docs/plan-et-generation.md b/docs/plan-et-generation.md index 78cf74f..ff6e52c 100644 --- a/docs/plan-et-generation.md +++ b/docs/plan-et-generation.md @@ -46,7 +46,7 @@ Tous sous `docs/`, machine-lisibles, validés, consommés par le GUI, le CLI et ### Dérivations clés - **Nommage/adressage** : tout part de la `fonction` de l'hôte (`web-frontal-03`). `VMID = 9·catégorie·service·NN`, `VLAN = catégorie.vlan`, - `IP = 10.1..(service×10 + NN)`. Voir `docs/nomenclature-vm.md`. + `IP = 10.0..(service×10 + NN)`. Voir `docs/nomenclature-vm.md`. - **DSN** (lien application↔base) : `://:@:/`. Une application reçoit les bases où `(portee=application ET consommateur=elle)` OU `(portee=groupe ET consommateur=son groupe)` OU `(portee=hote ET consommateur=son hôte)`. @@ -157,13 +157,13 @@ C'est ainsi que le plan a été initialisé sans perte, avec diff vide vérifié Le **moteur** (ce dépôt, `Set-OPS`) est générique et partageable ; il ne contient aucune donnée d'instance. Une **instance** (le plan + l'inventaire d'un loup) vit -dans son **propre dépôt** (ex. `OPS-Chezlepro`). +dans son **propre dépôt** (ex. `OPS-monatelier`). Le moteur localise l'instance via **`SETOPS_INSTANCE`** (défaut : `instance`). Deux modèles : - **Modèle A — dépôts frères** (en cours) : moteur et instance côte à côte ; un - symlink `instance -> ../OPS-Chezlepro` (gitignoré) fait que le défaut résout + symlink `instance -> ../OPS-monatelier` (gitignoré) fait que le défaut résout l'instance sans configuration. Idéal quand on développe le moteur *et* l'instance. - **Modèle B — moteur en sous-module** (futur, pour la meute) : l'instance épingle une version du moteur ; `SETOPS_INSTANCE` pointe la racine de l'instance. @@ -172,7 +172,7 @@ Pour brancher une instance (modèle A) : ```bash cd Set-OPS -ln -s ../OPS-Chezlepro instance # ou : export SETOPS_INSTANCE=/chemin/instance +ln -s ../OPS-monatelier instance # ou : export SETOPS_INSTANCE=/chemin/instance make inventaire-verifier # lit l'instance via le symlink ``` diff --git a/docs/procedure-template-debian13-proxmox.md b/docs/procedure-template-debian13-proxmox.md index 31e255e..a499c3c 100644 --- a/docs/procedure-template-debian13-proxmox.md +++ b/docs/procedure-template-debian13-proxmox.md @@ -18,7 +18,7 @@ docs/modeles_vm/debian13-proxmox.md ## 1. Objectif du modèle -Le modèle Debian 13 doit servir de base commune pour les futurs serveurs de Chezlepro Inc. +Le modèle Debian 13 doit servir de base commune pour les futurs serveurs de l_instance Objectifs : @@ -92,13 +92,13 @@ Discard : selon stockage, seulement si pertinent SSD emulation : oui si le stockage est réellement SSD/NVMe ``` -Même si le stockage réel est sur TrueNAS iSCSI, le disque présenté à la VM doit rester : +Même si le stockage réel est sur un stockage réseau iSCSI, le disque présenté à la VM doit rester : ```text SCSI via VirtIO SCSI single ``` -Le choix SCSI ici concerne le bus virtuel vu par la VM, pas le protocole réel entre Proxmox et TrueNAS. +Le choix SCSI ici concerne le bus virtuel vu par la VM, pas le protocole réel entre Proxmox et le stockage. ### Taille du disque @@ -202,7 +202,7 @@ LVM Le stockage réel contient déjà plusieurs couches : ```text -TrueNAS ZFS +stockage ZFS → zvol iSCSI → Proxmox → disque virtuel @@ -495,8 +495,8 @@ Exemple IP statique temporaire pour joindre la VM de modèle : ```bash qm set 9000 --ciuser ansible qm set 9000 --sshkeys ~/.ssh/id_ed25519.pub -qm set 9000 --ipconfig0 ip=10.1.99.99/24,gw=10.1.99.1 -qm set 9000 --nameserver 10.1.99.1 +qm set 9000 --ipconfig0 ip=10.0.99.99/24,gw=10.0.99.1 +qm set 9000 --nameserver 10.0.99.1 ``` Pour les clones, ces valeurs seront remplacées par l'identité réelle du serveur. @@ -561,7 +561,7 @@ reboot ## 19. SSH durci attendu -Le modèle Chezlepro suppose que Cloud-Init injecte le `ciuser` et sa clé publique avant la prise en charge par Ansible. +Le modèle suppose que Cloud-Init injecte le `ciuser` et sa clé publique avant la prise en charge par Ansible. L'exigence immédiate est que l'accès par clé fonctionne pour `ansible`. @@ -768,7 +768,7 @@ Les paramètres par VM (VMID, IP, VLAN, passerelle) ne sont plus saisis à la ma Après le premier démarrage, tester l'accès : ```bash -ssh ansible@10.1.15.31 +ssh ansible@10.0.15.31 ``` Ensuite appliquer la conformité Ansible : diff --git a/docs/vm-lifecycle.md b/docs/vm-lifecycle.md index caa54de..44dc3e8 100644 --- a/docs/vm-lifecycle.md +++ b/docs/vm-lifecycle.md @@ -1,6 +1,6 @@ -# Cycle de vie des VM Chezlepro +# Cycle de vie des VM -Ce document décrit le cycle normal d'une VM Debian Chezlepro, depuis l'installation minimale jusqu'à la conformité continue par Ansible. +Ce document décrit le cycle normal d'une VM Debian, depuis l'installation minimale jusqu'à la conformité continue par Ansible. ## Vue d'ensemble @@ -35,7 +35,7 @@ aucun rôle applicatif aucun secret ``` -Cette VM n'est pas encore un golden template Chezlepro. +Cette VM n'est pas encore un golden template. ## 2. Goldenisation @@ -45,7 +45,7 @@ La goldenisation est faite par : make preparer-modele ``` -Ce playbook ajoute le socle Chezlepro commun au template : +Ce playbook ajoute le socle commun au template : ```text paquets communs diff --git a/exemples/instance.exemple.yml b/exemples/instance.exemple.yml index 83c6154..457e31b 100644 --- a/exemples/instance.exemple.yml +++ b/exemples/instance.exemple.yml @@ -12,5 +12,5 @@ domaine_interne: "acme.internal" # Le reste de l'identite vit dans le PLAN de l'instance : -# - instance/plan/nomenclature.yml : supernet (ex. 10.1.0.0/16) + liste de fonctions +# - instance/plan/nomenclature.yml : supernet (ex. 10.0.0.0/16) + liste de fonctions # - instance/plan/serveurs.yml / applications.yml / domaines.yml : le plan rempli diff --git a/playbooks/modeles_vm/debian13_proxmox_preparer.yml b/playbooks/modeles_vm/debian13_proxmox_preparer.yml index aca8cfc..1919504 100644 --- a/playbooks/modeles_vm/debian13_proxmox_preparer.yml +++ b/playbooks/modeles_vm/debian13_proxmox_preparer.yml @@ -1,5 +1,5 @@ --- -- name: Préparer le template Debian 13 Proxmox Chezlepro +- name: Préparer le template Debian 13 Proxmox hosts: modeles_vm become: true gather_facts: true diff --git a/playbooks/modeles_vm/debian13_proxmox_verifier.yml b/playbooks/modeles_vm/debian13_proxmox_verifier.yml index 27f9f91..2a96c64 100644 --- a/playbooks/modeles_vm/debian13_proxmox_verifier.yml +++ b/playbooks/modeles_vm/debian13_proxmox_verifier.yml @@ -1,5 +1,5 @@ --- -- name: Vérifier le template Debian 13 Proxmox Chezlepro +- name: Vérifier le template Debian 13 Proxmox hosts: modeles_vm become: true gather_facts: true diff --git a/playbooks/proxmox/README.md b/playbooks/proxmox/README.md index f6c04c0..f0a856a 100644 --- a/playbooks/proxmox/README.md +++ b/playbooks/proxmox/README.md @@ -57,8 +57,8 @@ make creer-vm \ HOTE=web-frontal-01 \ VMID=95301 \ VLAN=15 \ - ADRESSE_IP=10.1.15.31 \ - PASSERELLE=10.1.15.1 \ + ADRESSE_IP=10.0.15.31 \ + PASSERELLE=10.0.15.1 \ GROUPES="serveur_debian serveur_durci" ``` @@ -67,7 +67,7 @@ make creer-vm \ Le disque du clone hérite de la taille du modèle. Pour l'agrandir à la création, fournir explicitement une taille supérieure à celle du modèle : ```bash -make creer-vm HOTE=web-frontal-01 VMID=95301 VLAN=15 ADRESSE_IP=10.1.15.31 PASSERELLE=10.1.15.1 TAILLE_DISQUE=64G GROUPES="serveur_debian serveur_durci" +make creer-vm HOTE=web-frontal-01 VMID=95301 VLAN=15 ADRESSE_IP=10.0.15.31 PASSERELLE=10.0.15.1 TAILLE_DISQUE=64G GROUPES="serveur_debian serveur_durci" ``` Proxmox ne permet pas de réduire un disque existant. diff --git a/roles/applications/README.md b/roles/applications/README.md index 0354aca..551f6d5 100644 --- a/roles/applications/README.md +++ b/roles/applications/README.md @@ -1,3 +1,3 @@ # applications -Rôles applications : services applicatifs Chezlepro. +Rôles applications : services applicatifs internes. diff --git a/roles/auditd/tasks/main.yml b/roles/auditd/tasks/main.yml index c044848..1ca1604 100644 --- a/roles/auditd/tasks/main.yml +++ b/roles/auditd/tasks/main.yml @@ -6,7 +6,7 @@ - audispd-plugins state: present -- name: Déployer les règles auditd Chezlepro +- name: Déployer les règles auditd Set-OPS ansible.builtin.template: src: 99-setops.rules.j2 dest: /etc/audit/rules.d/99-setops.rules diff --git a/roles/client_journal/README.md b/roles/client_journal/README.md index ab058fc..788d286 100644 --- a/roles/client_journal/README.md +++ b/roles/client_journal/README.md @@ -15,7 +15,7 @@ visible dans Grafana (datasource Loki). ## Variables | Variable | Défaut | Rôle | | --- | --- | --- | -| `client_journal_loki_url` | `http://10.1.14.11:3100/loki/api/v1/push` | Endpoint Loki (obs-01) | +| `client_journal_loki_url` | `http://10.0.14.11:3100/loki/api/v1/push` | Endpoint Loki (obs-01) | ## Notes / limites - La **syntaxe de configuration Alloy évolue** entre versions ; la config fournie diff --git a/roles/client_journal/defaults/main.yml b/roles/client_journal/defaults/main.yml index 4819807..1727abd 100644 --- a/roles/client_journal/defaults/main.yml +++ b/roles/client_journal/defaults/main.yml @@ -7,7 +7,7 @@ client_journal_utilisateur: "alloy" client_journal_config: "/etc/alloy/config.alloy" # Point de collecte Loki (obs-01, serveur_loki, VLAN 14). -client_journal_loki_url: "http://10.1.14.11:3100/loki/api/v1/push" +client_journal_loki_url: "http://10.0.14.11:3100/loki/api/v1/push" # Depot apt officiel Grafana (partage avec serveur_loki / serveur_grafana). client_journal_depot_cle_url: "https://apt.grafana.com/gpg-full.key" diff --git a/roles/client_ldap/README.md b/roles/client_ldap/README.md index 4c922cc..fa80509 100644 --- a/roles/client_ldap/README.md +++ b/roles/client_ldap/README.md @@ -11,15 +11,15 @@ via l'annuaire central `serveur_openldap`, grâce à **SSSD** (NSS + PAM). - `libpam-sss` active automatiquement le module PAM `sss`. ## Effet -Après ce rôle, les comptes de l'annuaire Chezlepro peuvent se connecter à l'hôte +Après ce rôle, les comptes de l'annuaire interne peuvent se connecter à l'hôte (SSH, console) et leur home est créé à la première connexion. Couplé à `client_pki` (identité machine), l'écosystème a une authentification **machines + utilisateurs** centralisée. ## Variables principales | Variable | Défaut | Rôle | | --- | --- | --- | -| `client_ldap_uri` | `ldap://idm-01.chezlepro.internal` | URI de l'annuaire | -| `client_ldap_base_dn` | `dc=chezlepro,dc=internal` | Base de recherche | +| `client_ldap_uri` | `ldap://idm-01.exemple.internal` | URI de l'annuaire | +| `client_ldap_base_dn` | `dc=exemple,dc=internal` | Base de recherche | | `client_ldap_bind_dn` | `""` (anonyme) | Compte de lecture (optionnel, mdp via Vault) | | `client_ldap_tls_reqcert` | `never` | Validation TLS (→ `demand` avec LDAPS) | diff --git a/roles/client_pki/README.md b/roles/client_pki/README.md index dd9c610..042eeee 100644 --- a/roles/client_pki/README.md +++ b/roles/client_pki/README.md @@ -14,7 +14,7 @@ automatiquement. ## « Chaque hôte authentifiable » Après ce rôle, l'hôte possède une **identité machine** vérifiable : un certificat émis -par l'AC Chezlepro, renouvelé sans intervention. Les services peuvent l'utiliser pour +par l'AC interne, renouvelé sans intervention. Les services peuvent l'utiliser pour du TLS / mTLS interne. ## Secrets requis (Vault) @@ -27,8 +27,8 @@ L'empreinte racine s'obtient sur l'AC (`step certificate fingerprint @chezlepro.internal` | Expéditeur par défaut | +| `client_smtp_from` | `@exemple.internal` | Expéditeur par défaut | | `client_smtp_tls` | `false` | TLS (→ `true` avec certificats step_ca) | ## Notes / limites diff --git a/roles/cloud_init/tasks/main.yml b/roles/cloud_init/tasks/main.yml index 076c3c2..f74b534 100644 --- a/roles/cloud_init/tasks/main.yml +++ b/roles/cloud_init/tasks/main.yml @@ -6,7 +6,7 @@ - cloud-guest-utils state: present -- name: Déployer la configuration cloud-init Chezlepro +- name: Déployer la configuration cloud-init Set-OPS ansible.builtin.template: src: 99_setops.cfg.j2 dest: /etc/cloud/cloud.cfg.d/99_setops.cfg diff --git a/roles/fail2ban_ssh/tasks/main.yml b/roles/fail2ban_ssh/tasks/main.yml index 4cb6824..c55e93b 100644 --- a/roles/fail2ban_ssh/tasks/main.yml +++ b/roles/fail2ban_ssh/tasks/main.yml @@ -12,7 +12,7 @@ group: root mode: "0755" -- name: Déployer la jail SSH Chezlepro +- name: Déployer la jail SSH Set-OPS ansible.builtin.template: src: sshd-setops.local.j2 dest: /etc/fail2ban/jail.d/sshd-setops.local diff --git a/roles/journald/tasks/main.yml b/roles/journald/tasks/main.yml index 462cce3..1f1547e 100644 --- a/roles/journald/tasks/main.yml +++ b/roles/journald/tasks/main.yml @@ -7,7 +7,7 @@ group: root mode: "0755" -- name: Déployer la configuration journald Chezlepro +- name: Déployer la configuration journald Set-OPS ansible.builtin.template: src: 99-setops.conf.j2 dest: /etc/systemd/journald.conf.d/99-setops.conf diff --git a/roles/motd/tasks/main.yml b/roles/motd/tasks/main.yml index 3814c1d..dd2b8ac 100644 --- a/roles/motd/tasks/main.yml +++ b/roles/motd/tasks/main.yml @@ -1,5 +1,5 @@ --- -- name: Déployer le MOTD Chezlepro +- name: Déployer le MOTD Set-OPS ansible.builtin.template: src: motd.j2 dest: /etc/motd diff --git a/roles/motd/templates/motd.j2 b/roles/motd/templates/motd.j2 index 140d1ad..30cda0f 100644 --- a/roles/motd/templates/motd.j2 +++ b/roles/motd/templates/motd.j2 @@ -1,2 +1,2 @@ -Système Chezlepro +Système {{ domaine_interne | default('Set-OPS') }} Gestion : Set-OPS / Ansible diff --git a/roles/nftables_baseline/tasks/main.yml b/roles/nftables_baseline/tasks/main.yml index 66de180..e9ac5c7 100644 --- a/roles/nftables_baseline/tasks/main.yml +++ b/roles/nftables_baseline/tasks/main.yml @@ -4,7 +4,7 @@ name: nftables state: present -- name: Déployer la configuration nftables Chezlepro +- name: Déployer la configuration nftables Set-OPS ansible.builtin.template: src: nftables.conf.j2 dest: /etc/nftables.conf diff --git a/roles/serveur_forgejo/README.md b/roles/serveur_forgejo/README.md index edbddba..676c2d5 100644 --- a/roles/serveur_forgejo/README.md +++ b/roles/serveur_forgejo/README.md @@ -21,8 +21,8 @@ vault_bd_forgejo: "..." # mot de passe BD (partage avec serveur_postgresql) | Variable | Défaut | Rôle | | --- | --- | --- | | `serveur_forgejo_version` | `10.0.0` | Version (à vérifier/bumper) | -| `serveur_forgejo_hostname` | `forge.chezlepro.internal` | Domaine (via nginx) | -| `serveur_forgejo_db_host` | `10.1.13.11` | data-01 | +| `serveur_forgejo_hostname` | `forge.exemple.internal` | Domaine (via nginx) | +| `serveur_forgejo_db_host` | `10.0.13.11` | data-01 | ## Notes / limites - **Version** à confirmer sur forgejo.org/download ; l'URL suit le motif officiel des releases. diff --git a/roles/serveur_forgejo/defaults/main.yml b/roles/serveur_forgejo/defaults/main.yml index eece121..097f6dd 100644 --- a/roles/serveur_forgejo/defaults/main.yml +++ b/roles/serveur_forgejo/defaults/main.yml @@ -17,7 +17,7 @@ serveur_forgejo_http_port: 3000 # Base de donnees : resolue depuis le registre par le groupe consommateur. serveur_forgejo_groupe: "serveur_forgejo" -serveur_forgejo_db_host: "10.1.13.11" # data-01 +serveur_forgejo_db_host: "10.0.13.11" # data-01 # Relais courriel. serveur_forgejo_smtp: "infra-mail-01.{{ domaine_interne }}" diff --git a/roles/serveur_forgejo/templates/app.ini.j2 b/roles/serveur_forgejo/templates/app.ini.j2 index af60446..f5d4e2a 100644 --- a/roles/serveur_forgejo/templates/app.ini.j2 +++ b/roles/serveur_forgejo/templates/app.ini.j2 @@ -1,5 +1,5 @@ ; Gere par Set-OPS (role serveur_forgejo). Ne pas editer a la main. -APP_NAME = Forgejo Chezlepro +APP_NAME = Forgejo RUN_USER = {{ serveur_forgejo_utilisateur }} RUN_MODE = prod WORK_PATH = {{ serveur_forgejo_data }} diff --git a/roles/serveur_grafana/README.md b/roles/serveur_grafana/README.md index 5209585..24cc1c2 100644 --- a/roles/serveur_grafana/README.md +++ b/roles/serveur_grafana/README.md @@ -10,7 +10,7 @@ au-dessus de Prometheus (métriques) et Loki (journaux). - Inscriptions publiques désactivées. ## Publication -- Derrière `serveur_nginx` (TLS à l'edge) ; `GF_SERVER_ROOT_URL=https://grafana.chezlepro.internal/`. +- Derrière `serveur_nginx` (TLS à l'edge) ; `GF_SERVER_ROOT_URL=https://grafana.exemple.internal/`. - Le site nginx se déclare côté `serveur_nginx`. ## Secret requis (Vault) @@ -21,7 +21,7 @@ serveur_grafana_admin_password: "{{ vault_grafana_admin }}" ## Variables principales | Variable | Défaut | Rôle | | --- | --- | --- | -| `serveur_grafana_hostname` | `grafana.chezlepro.internal` | Domaine | +| `serveur_grafana_hostname` | `grafana.exemple.internal` | Domaine | | `serveur_grafana_prometheus_url` | `http://localhost:9090` | Datasource Prometheus | | `serveur_grafana_loki_url` | `http://localhost:3100` | Datasource Loki | diff --git a/roles/serveur_icinga/defaults/main.yml b/roles/serveur_icinga/defaults/main.yml index 8071b5a..5c547eb 100644 --- a/roles/serveur_icinga/defaults/main.yml +++ b/roles/serveur_icinga/defaults/main.yml @@ -18,7 +18,7 @@ serveur_icinga_depot_source: >- # Base Icinga DB : resolue depuis le registre par le groupe consommateur. serveur_icinga_groupe: "serveur_icinga" -serveur_icinga_db_host: "10.1.13.11" # data-01 (serveur_postgresql) +serveur_icinga_db_host: "10.0.13.11" # data-01 (serveur_postgresql) # Redis dedie a Icinga DB (paquet icingadb-redis). serveur_icinga_redis_host: "localhost" diff --git a/roles/serveur_keycloak/README.md b/roles/serveur_keycloak/README.md index 1e989e8..3fea90e 100644 --- a/roles/serveur_keycloak/README.md +++ b/roles/serveur_keycloak/README.md @@ -1,7 +1,7 @@ # serveur_keycloak SSO / IAM **Keycloak** (distribution Quarkus) — hub d'authentification centralisée -(OIDC/SAML) pour les services Chezlepro. +(OIDC/SAML) pour les services internes. ## Rôle - Installe un JRE, télécharge et extrait la distribution Keycloak dans `/opt/keycloak`. @@ -27,8 +27,8 @@ vault_bd_keycloak: "..." # mot de passe | Variable | Défaut | Rôle | | --- | --- | --- | | `serveur_keycloak_version` | `26.0.7` | Version (à vérifier/bumper sur keycloak.org/downloads) | -| `serveur_keycloak_hostname` | `keycloak.chezlepro.internal` | Hostname public (via nginx) | -| `serveur_keycloak_db_host` | `10.1.13.11` | IP de data-01 (serveur_postgresql) | +| `serveur_keycloak_hostname` | `keycloak.exemple.internal` | Hostname public (via nginx) | +| `serveur_keycloak_db_host` | `10.0.13.11` | IP de data-01 (serveur_postgresql) | | `serveur_keycloak_admin_user` | `admin` | Admin bootstrap | ## Notes / limites diff --git a/roles/serveur_keycloak/defaults/main.yml b/roles/serveur_keycloak/defaults/main.yml index fce1d92..78d3782 100644 --- a/roles/serveur_keycloak/defaults/main.yml +++ b/roles/serveur_keycloak/defaults/main.yml @@ -14,7 +14,7 @@ serveur_keycloak_hostname: "keycloak.{{ domaine_interne }}" # Base de donnees : resolue depuis le registre par le groupe consommateur. serveur_keycloak_groupe: "serveur_keycloak" # IP interne du serveur PostgreSQL (data-01, cf. nomenclature). -serveur_keycloak_db_host: "10.1.13.11" +serveur_keycloak_db_host: "10.0.13.11" # Secrets (Ansible Vault) — obligatoires. serveur_keycloak_admin_user: "admin" diff --git a/roles/serveur_nginx/README.md b/roles/serveur_nginx/README.md index d3f7191..5cad3a5 100644 --- a/roles/serveur_nginx/README.md +++ b/roles/serveur_nginx/README.md @@ -4,7 +4,7 @@ Installe et configure nginx comme **edge** interne : reverse proxy et terminaiso ## Rôle - Installe `nginx` et `ssl-cert` (certificat auto-signé). -- Durcissement de base via `conf.d/99-chezlepro.conf` (`server_tokens off`, TLS 1.2/1.3, taille de corps). +- Durcissement de base via `conf.d/99-setops.conf` (`server_tokens off`, TLS 1.2/1.3, taille de corps). - Publie des sites de reverse proxy déclarés dans `serveur_nginx_sites` (vide par défaut). - **Valide la configuration (`nginx -t`) avant de recharger** (handler `Valider et recharger nginx`). @@ -27,8 +27,8 @@ Installe et configure nginx comme **edge** interne : reverse proxy et terminaiso ```yaml serveur_nginx_sites: - nom: forge - domaine: forge.chezlepro.internal - amont: "http://10.1.15.11:3000" + domaine: forge.exemple.internal + amont: "http://10.0.15.11:3000" # certificat / cle optionnels (sinon snakeoil) ``` diff --git a/roles/serveur_nginx/defaults/main.yml b/roles/serveur_nginx/defaults/main.yml index 4baebf3..2d2a2a2 100644 --- a/roles/serveur_nginx/defaults/main.yml +++ b/roles/serveur_nginx/defaults/main.yml @@ -24,7 +24,7 @@ serveur_nginx_desactiver_defaut: false # retirer le site Debian par defaut serveur_nginx_sites: [] # - nom: forge # domaine: forge.{{ domaine_interne }} -# amont: "http://10.1.15.11:3000" +# amont: "http://10.0.15.11:3000" # certificat: "/etc/ssl/.../forge.pem" # optionnel, sinon snakeoil # cle: "/etc/ssl/.../forge.key" diff --git a/roles/serveur_openldap/README.md b/roles/serveur_openldap/README.md index 64d20f9..b7f84a4 100644 --- a/roles/serveur_openldap/README.md +++ b/roles/serveur_openldap/README.md @@ -10,8 +10,8 @@ et fédération applicative (Keycloak). - Crée les unités organisationnelles de base (`ou=people`, `ou=groups`). ## Identité -- Domaine `chezlepro.internal` → base DN **`dc=chezlepro,dc=internal`** (dérivée). -- Admin : `cn=admin,dc=chezlepro,dc=internal`. +- Domaine `exemple.internal` → base DN **`dc=exemple,dc=internal`** (dérivée). +- Admin : `cn=admin,dc=exemple,dc=internal`. ## Secret requis (Vault) ```yaml @@ -23,8 +23,8 @@ refuse de s'exécuter (assertion explicite). ## Variables principales | Variable | Défaut | Rôle | | --- | --- | --- | -| `serveur_openldap_domaine` | `chezlepro.internal` | Domaine → base DN | -| `serveur_openldap_organisation` | `Chezlepro Inc` | Organisation | +| `serveur_openldap_domaine` | `exemple.internal` | Domaine → base DN | +| `serveur_openldap_organisation` | `Exemple Inc` | Organisation | | `serveur_openldap_ou` | `[people, groups]` | OU de base créées | ## Notes / limites diff --git a/roles/serveur_openldap/defaults/main.yml b/roles/serveur_openldap/defaults/main.yml index 7e33a48..af48782 100644 --- a/roles/serveur_openldap/defaults/main.yml +++ b/roles/serveur_openldap/defaults/main.yml @@ -8,7 +8,7 @@ serveur_openldap_service: "slapd" # Identite de l'annuaire. serveur_openldap_domaine: "{{ domaine_interne }}" -serveur_openldap_organisation: "Chezlepro Inc" +serveur_openldap_organisation: "Exemple Inc" # Base DN derivee du domaine interne (ex. acme.local -> dc=acme,dc=local). serveur_openldap_base_dn: "dc={{ serveur_openldap_domaine.split('.') | join(',dc=') }}" serveur_openldap_admin_dn: "cn=admin,{{ serveur_openldap_base_dn }}" diff --git a/roles/serveur_postgresql/README.md b/roles/serveur_postgresql/README.md index 03ca039..780e102 100644 --- a/roles/serveur_postgresql/README.md +++ b/roles/serveur_postgresql/README.md @@ -5,14 +5,14 @@ Installe et configure PostgreSQL (paquet Debian 13) comme base relationnelle par ## Rôle - Installe `postgresql`, `postgresql-contrib` et `python3-psycopg2`. - Détecte le cluster installé par Debian (`/etc/postgresql//main`). -- Configure via un fichier `conf.d/99-chezlepro.conf` : `listen_addresses`, `port`, `password_encryption`. +- Configure via un fichier `conf.d/99-setops.conf` : `listen_addresses`, `port`, `password_encryption`. - Gère `pg_hba.conf` : socket local en `peer` (administration), boucle locale et **réseaux internes autorisés** en `scram-sha-256`. - Active et démarre le service. - Provisionne optionnellement comptes et bases applicatifs (vides par défaut). ## Réseau et sécurité - Écoute par défaut sur `127.0.0.1` et l'IP interne de l'hôte (`ansible_host`). -- `serveur_postgresql_reseaux_autorises` ouvre l'accès aux clients internes (défaut `10.1.0.0/16`). +- `serveur_postgresql_reseaux_autorises` ouvre l'accès aux clients internes (défaut `10.0.0.0/16`). - Authentification `scram-sha-256` (jamais `md5`/`trust`). - `pg_hba.conf` et la conf sont **entièrement gérés** par le rôle ; les modifications manuelles sont écrasées. @@ -22,7 +22,7 @@ Installe et configure PostgreSQL (paquet Debian 13) comme base relationnelle par | `serveur_postgresql_version` | `""` (auto) | Version majeure du cluster | | `serveur_postgresql_port` | `5432` | Port d'écoute | | `serveur_postgresql_ecoute` | `127.0.0.1` + IP interne | `listen_addresses` | -| `serveur_postgresql_reseaux_autorises` | `["10.1.0.0/16"]` | Réseaux clients en `pg_hba` | +| `serveur_postgresql_reseaux_autorises` | `["10.0.0.0/16"]` | Réseaux clients en `pg_hba` | | `serveur_postgresql_methode_auth` | `scram-sha-256` | Méthode d'authentification | | `serveur_postgresql_parametres` | `{}` | Réglages additionnels | | `serveur_postgresql_comptes` | `[]` | Comptes applicatifs (mot de passe via Vault) | diff --git a/roles/serveur_postgresql/defaults/main.yml b/roles/serveur_postgresql/defaults/main.yml index 4ed7df7..f3dfded 100644 --- a/roles/serveur_postgresql/defaults/main.yml +++ b/roles/serveur_postgresql/defaults/main.yml @@ -16,7 +16,7 @@ serveur_postgresql_ecoute: - "127.0.0.1" - "{{ ansible_host | default(ansible_default_ipv4.address, true) }}" serveur_postgresql_reseaux_autorises: - - "10.1.0.0/16" + - "10.0.0.0/16" serveur_postgresql_methode_auth: "scram-sha-256" # Reglages additionnels (vide => valeurs par defaut de Debian). diff --git a/roles/serveur_postgresql/tasks/main.yml b/roles/serveur_postgresql/tasks/main.yml index 2c829d2..1b61d85 100644 --- a/roles/serveur_postgresql/tasks/main.yml +++ b/roles/serveur_postgresql/tasks/main.yml @@ -37,7 +37,7 @@ group: postgres mode: "0755" -- name: Deployer la configuration Chezlepro +- name: Deployer la configuration Set-OPS ansible.builtin.template: src: 99-setops.conf.j2 dest: "{{ serveur_postgresql_conf_dir }}/conf.d/99-setops.conf" diff --git a/roles/serveur_redis/README.md b/roles/serveur_redis/README.md index 62bf732..28e284e 100644 --- a/roles/serveur_redis/README.md +++ b/roles/serveur_redis/README.md @@ -5,7 +5,7 @@ PostgreSQL. ## Rôle - Installe `redis-server`. -- Déploie une **surcharge** `/etc/redis/chezlepro.conf` (incluse en fin de `redis.conf`, +- Déploie une **surcharge** `/etc/redis/setops.conf` (incluse en fin de `redis.conf`, donc prioritaire) : écoute, `requirepass`, `maxmemory` + politique d'éviction. - N'écrase pas le `redis.conf` du paquet (approche non destructive par `include`). diff --git a/roles/serveur_redis/tasks/main.yml b/roles/serveur_redis/tasks/main.yml index 1eda148..8449c5c 100644 --- a/roles/serveur_redis/tasks/main.yml +++ b/roles/serveur_redis/tasks/main.yml @@ -12,7 +12,7 @@ update_cache: true cache_valid_time: 3600 -- name: Deployer la surcharge de configuration Chezlepro +- name: Deployer la surcharge de configuration Set-OPS ansible.builtin.template: src: setops.conf.j2 dest: "{{ serveur_redis_config }}" diff --git a/roles/serveur_sendmail/README.md b/roles/serveur_sendmail/README.md index 03417e7..0a93993 100644 --- a/roles/serveur_sendmail/README.md +++ b/roles/serveur_sendmail/README.md @@ -11,15 +11,15 @@ Relais SMTP sortant interne. **Implémenté avec Postfix** (fournit l'interface ## Sécurité - `smtpd_relay_restrictions = permit_mynetworks, reject_unauth_destination` → pas de relais ouvert. -- `mynetworks` par défaut : boucle locale + `10.1.0.0/16`. +- `mynetworks` par défaut : boucle locale + `10.0.0.0/16`. - N'héberge pas de boîtes (`mydestination` ne contient pas le domaine) : remise relayée. - TLS opportuniste (`may`), certificat snakeoil par défaut. ## Variables principales | Variable | Défaut | Rôle | | --- | --- | --- | -| `serveur_sendmail_domaine` | `chezlepro.internal` | `mydomain` / mailname | -| `serveur_sendmail_reseaux_autorises` | boucle + `10.1.0.0/16` | `mynetworks` (qui peut relayer) | +| `serveur_sendmail_domaine` | `exemple.internal` | `mydomain` / mailname | +| `serveur_sendmail_reseaux_autorises` | boucle + `10.0.0.0/16` | `mynetworks` (qui peut relayer) | | `serveur_sendmail_smarthost` | `""` | Relais amont (vide = remise directe MX) | | `serveur_sendmail_inet_interfaces` | `all` | Interfaces d'écoute | | `serveur_sendmail_tls_cert` / `_cle` | snakeoil | Certificat TLS | diff --git a/roles/serveur_sendmail/defaults/main.yml b/roles/serveur_sendmail/defaults/main.yml index 94f847b..f0141fb 100644 --- a/roles/serveur_sendmail/defaults/main.yml +++ b/roles/serveur_sendmail/defaults/main.yml @@ -15,7 +15,7 @@ serveur_sendmail_nom_hote: "{{ ansible_fqdn | default(ansible_hostname) }}" serveur_sendmail_reseaux_autorises: - "127.0.0.0/8" - "[::1]/128" - - "10.1.0.0/16" + - "10.0.0.0/16" # Smarthost amont optionnel. Vide => remise directe (MX). serveur_sendmail_smarthost: "" # ex. "[smtp.exemple.com]:587" diff --git a/roles/serveur_step_ca/README.md b/roles/serveur_step_ca/README.md index d0ac9a3..88981ec 100644 --- a/roles/serveur_step_ca/README.md +++ b/roles/serveur_step_ca/README.md @@ -1,7 +1,7 @@ # serveur_step_ca Autorité de certification interne **Smallstep step-ca** avec provisioner **ACME**, -pour émettre les certificats internes de Chezlepro (`client_pki` est le client ACME). +pour émettre les certificats internes (`client_pki` est le client ACME). ## Rôle - Ajoute le **dépôt apt officiel Smallstep** (clé + source deb822) et installe `step-ca` + `step-cli`. @@ -24,10 +24,10 @@ les variables en clair référençant ces secrets dans `.../serveur_step_ca/main ## Variables principales | Variable | Défaut | Rôle | | --- | --- | --- | -| `serveur_step_ca_nom` | `Chezlepro Internal CA` | Nom de l'AC | +| `serveur_step_ca_nom` | `Set-OPS Internal CA` | Nom de l'AC | | `serveur_step_ca_dns` | FQDN + IP | SAN/DNS du certificat de l'AC | | `serveur_step_ca_adresse` | `:8443` | Adresse d'écoute | -| `serveur_step_ca_provisioner` | `admin@chezlepro.internal` | Provisioner JWK admin | +| `serveur_step_ca_provisioner` | `admin@exemple.internal` | Provisioner JWK admin | | `serveur_step_ca_acme` | `true` | Ajoute un provisioner ACME | ## Notes diff --git a/roles/serveur_step_ca/defaults/main.yml b/roles/serveur_step_ca/defaults/main.yml index 08c7649..ce99e34 100644 --- a/roles/serveur_step_ca/defaults/main.yml +++ b/roles/serveur_step_ca/defaults/main.yml @@ -16,7 +16,7 @@ serveur_step_ca_steppath: "/etc/step-ca" serveur_step_ca_service: "step-ca" # Identite de l'AC. -serveur_step_ca_nom: "Chezlepro Internal CA" +serveur_step_ca_nom: "Set-OPS Internal CA" serveur_step_ca_dns: "{{ ansible_fqdn | default(ansible_hostname) }},{{ ansible_host | default('127.0.0.1') }}" serveur_step_ca_adresse: ":8443" serveur_step_ca_provisioner: "admin@{{ domaine_interne }}" diff --git a/roles/ssh_baseline/tasks/main.yml b/roles/ssh_baseline/tasks/main.yml index ff4c078..6e47c8c 100644 --- a/roles/ssh_baseline/tasks/main.yml +++ b/roles/ssh_baseline/tasks/main.yml @@ -12,7 +12,7 @@ group: root mode: "0755" -- name: Déployer la configuration SSH Chezlepro +- name: Déployer la configuration SSH Set-OPS ansible.builtin.template: src: 10-setops.conf.j2 dest: /etc/ssh/sshd_config.d/10-setops.conf diff --git a/roles/web/README.md b/roles/web/README.md index 5f187a7..c14dd77 100644 --- a/roles/web/README.md +++ b/roles/web/README.md @@ -1,6 +1,6 @@ # web -Couche applicative web Chezlepro, distincte de l'edge `serveur_nginx`. +Couche applicative web, distincte de l'edge `serveur_nginx`. - frontaux : présentation web (UI, rendu, assets), groupe `serveur_web_frontal` ; - dorsaux : application web (API, traitement), groupe `serveur_web_dorsal`. diff --git a/scripts/inventory_gui.py b/scripts/inventory_gui.py index abf93db..459353d 100644 --- a/scripts/inventory_gui.py +++ b/scripts/inventory_gui.py @@ -1041,7 +1041,7 @@ HTML = r""" - +
${resume}
`; @@ -1108,8 +1108,8 @@ HTML = r""" - - + + diff --git a/scripts/tests/test_inventory_host.py b/scripts/tests/test_inventory_host.py index ab62e15..d2f7440 100644 --- a/scripts/tests/test_inventory_host.py +++ b/scripts/tests/test_inventory_host.py @@ -20,26 +20,26 @@ def _inventaire_factice() -> dict: "children": { "hotes_planifies": { "hosts": { - "data-01": { - "ansible_host": "10.1.13.11", + "app-01": { + "ansible_host": "10.0.2.11", "ansible_user": "ansible", "proxmox_cidr": 24, "proxmox_coeurs": 4, "proxmox_disque_taille": "160G", "proxmox_memoire": 2048, - "proxmox_noeud": "asgard", - "proxmox_passerelle": "10.1.13.1", - "proxmox_stockage": "TrueNAS", + "proxmox_noeud": "noeud-a", + "proxmox_passerelle": "10.0.2.1", + "proxmox_stockage": "stockage-a", "proxmox_vlan": 13, "proxmox_vmid": 93101, }, - # collab-01 : sans proxmox_noeud (champ optionnel). - "collab-01": { - "ansible_host": "10.1.15.21", + # app-02 : sans proxmox_noeud (champ optionnel). + "app-02": { + "ansible_host": "10.0.2.21", "proxmox_cidr": 24, "proxmox_disque_taille": "16G", - "proxmox_passerelle": "10.1.15.1", - "proxmox_stockage": "TrueNAS", + "proxmox_passerelle": "10.0.2.1", + "proxmox_stockage": "stockage-a", "proxmox_vlan": 15, "proxmox_vmid": 95201, }, @@ -47,34 +47,34 @@ def _inventaire_factice() -> dict: "incomplet-01": { "proxmox_vmid": 99901, "proxmox_cidr": 24, - "proxmox_passerelle": "10.1.99.1", + "proxmox_passerelle": "10.0.2.1", "proxmox_vlan": 99, }, } }, - "serveur_postgresql": {"hosts": {"data-01": {}}}, + "serveur_postgresql": {"hosts": {"app-01": {}}}, } } } def test_hote_complet_avec_noeud() -> None: - lignes = parametres_proxmox_hote(_inventaire_factice(), "data-01") + lignes = parametres_proxmox_hote(_inventaire_factice(), "app-01") attendu = { "SETOPS_VMID='93101'", - "SETOPS_IP='10.1.13.11'", + "SETOPS_IP='10.0.2.11'", "SETOPS_CIDR='24'", - "SETOPS_PASSERELLE='10.1.13.1'", + "SETOPS_PASSERELLE='10.0.2.1'", "SETOPS_VLAN='13'", - "SETOPS_STOCKAGE='TrueNAS'", + "SETOPS_STOCKAGE='stockage-a'", "SETOPS_DISQUE='160G'", - "SETOPS_NOEUD='asgard'", + "SETOPS_NOEUD='noeud-a'", } assert set(lignes) == attendu, lignes def test_hote_sans_noeud_emet_noeud_vide() -> None: - lignes = parametres_proxmox_hote(_inventaire_factice(), "collab-01") + lignes = parametres_proxmox_hote(_inventaire_factice(), "app-02") assert "SETOPS_NOEUD=''" in lignes, lignes assert "SETOPS_VMID='95201'" in lignes, lignes