# CHANGELOG — Set-OPS ## 2026-06-22 ### Ajouté - Ajout de `make hote-planifier` pour renseigner un hôte, son VMID et ses groupes sans création ni déploiement immédiat. - Ajout de `scripts/inventory_rules.py` pour centraliser les règles partagées entre la gestion CLI et l'interface locale d'inventaire. ### Modifié - Renforcement de la validation d'inventaire : - un hôte doit être soit planifié, soit actif, mais pas les deux ; - un hôte actif doit avoir `ansible_host` ; - un hôte doit porter au moins un groupe opérationnel ; - les VMID dupliqués sont refusés. - Conservation du VMID dans l'inventaire lors de `make creer-vm` et `make hote-ajouter`. - Alignement de l'aide Makefile et de la documentation sur le flux opérateur : planifier, activer/créer, déployer. - Retrait des groupes génériques obsolètes `serveurs_bases_donnees` et `serveurs_supervision` au profit des groupes de services précis. - Consolidation des groupes Icinga en `serveurs_icinga` afin de représenter une seule capacité de supervision serveur sur `mon-01`. ## 2026-06-21 ### Ajouté - Ajout de facilités `make` pour exploiter Ansible sur les VM Debian déployées : - diagnostic `ping`, `sudo` et `faits` ; - variables `LIMITE`, `VERIFICATION`, `DIFF`, `ETIQUETTES`, `SAUTER_ETIQUETTES` et `VARIABLES`. - Ajout de facilités `make` pour inspecter et valider les inventaires Ansible : - `hote-ajouter` ; - `hote-groupes` ; - `hote-afficher` ; - `inventaire-verifier` ; - `inventaire-lister` ; - `inventaire-graphe` ; - `inventaire-hote` ; - `inventaire-lab` ; - `inventaire-production`. - Ajout de `deployer` et `deployer-groupe` comme commandes opérateur simplifiées pour appliquer les playbooks de groupes. - Ajout de `scripts/inventory_host.py` pour gérer les entrées d'inventaire et leur appartenance aux groupes sans édition YAML manuelle. - Ajout de la convention `1 groupe opérationnel = 1 playbook homonyme` avec les premiers playbooks : - `playbooks/groupes/serveurs_debian.yml` ; - `playbooks/groupes/serveurs_durcis.yml`. - Ajout du playbook `playbooks/maintenance/verifier_hote_debian.yml` pour valider une VM Debian 13 gérée par Set-OPS après socle et durcissement. - Ajout de directives `AGENTS.md` pour formaliser le `Makefile` comme interface opérateur, la convention groupe/playbook, la francisation de la surface opérateur et les points de stabilisation avant commit. - Ajout du playbook `playbooks/proxmox/cloner_vm_debian.yml` et des cibles `make cloner-vm` / `make creer-vm` pour créer des clones Debian via l'API Proxmox sans stocker de secret dans le dépôt. - Ajout de `inventories/lab/group_vars/proxmox.yml` pour les paramètres Proxmox non sensibles et de `proxmox.vault.yml.example` pour préparer les secrets API avec Ansible Vault. - Ajout de `make config` pour renseigner les paramètres Proxmox et créer ou éditer le Vault API depuis le terminal. ### Modifié - Francisation de la surface opérateur : - variables `make` ; - cibles `make` ; - groupes d'inventaire ; - chemins des playbooks maison ; - libellés du script de gestion d'inventaire. - Documentation du flux de déploiement d'une VM clonée depuis le modèle doré avec les commandes `make`. - Optimisation de la procédure de bootstrap du modèle Debian 13 pour utiliser Cloud-Init comme source unique de l'identité initiale au lieu de maintenir une création manuelle parallèle du compte et de la clé SSH. - Simplification de `make cloner-vm` et `make creer-vm` pour que les paramètres Proxmox communs viennent des variables Ansible plutôt que de la ligne de commande ou de l'environnement. - Ajustement de `make config` pour ne plus redemander les valeurs Cloud-Init déjà portées par le modèle Proxmox. - Déplacement du VLAN hors de `make config` afin de l'exiger explicitement à chaque création de VM avec `VLAN=...`. - Retrait des options `DEMANDER_MDP` et `DEMANDER_SUDO` du `Makefile`; le flux suppose SSH par clé et sudo NOPASSWD déjà fonctionnels. - Retrait des playbooks de couches redondants `playbooks/socle/debian_commun.yml` et `playbooks/durcissement/debian_serveur_durcissement.yml`; la conformité des VM déployées passe maintenant par `playbooks/groupes/`. - Bonification de `AGENTS.md` pour désigner `playbooks/groupes/` comme source officielle de conformité et éviter les cibles `make` de couches parallèles. - Simplification de l'aide du `Makefile` pour exposer d'abord les gestes opérateur : inventaire, groupes, déploiement. - Clarification de `make aide` pour expliquer les différences entre `creer-vm`, `cloner-vm`, `deployer`, `deployer-groupe` et `appliquer`. - Réorganisation de `make aide` par objets d'exploitation : VM, hôtes, groupes, inventaires, modèle et validation. - Retrait des commandes opérateur explicites de ping et sudo; ces vérifications sont maintenant implicites dans `deployer` et `preparer-modele`. - Ajout d'une demande automatique de mot de passe Ansible Vault pour `make cloner-vm` et `make creer-vm` lorsqu'un `proxmox.vault.yml` chiffré est présent. - Amélioration du message d'erreur lorsque `proxmox.vault.yml` ne peut pas être chargé. - Ajustement du playbook Proxmox pour laisser apparaître les erreurs API utiles sans masquer entièrement les échecs de clonage. - Modification de `make deployer HOTE=...` pour appliquer les playbooks correspondant aux groupes de l'hôte. - Ajout d'une vérification explicite de la bibliothèque Python `proxmoxer` avant les appels API Proxmox. - Retrait de la taille disque clone des paramètres Proxmox persistés afin de ne pas tenter de réduire un disque hérité du modèle. - Ajout de la validation inventaire/playbooks pour empêcher un groupe opérationnel avec hôtes sans playbook homonyme. - Ajout du playbook de groupe `serveurs_web` comme point d'ancrage explicite avant l'ajout d'un rôle web. - Ajout d'un catalogue de services pour préparer Keycloak, OpenLDAP, PostgreSQL, Loki, Icinga, Prometheus, Grafana, Forgejo, Sendmail, step-ca, Redis, NGINX, Nextcloud et Collabora. - Ajout des groupes et playbooks homonymes neutres pour les prochains services centraux et intégrations clientes. - Documentation de l'ordre d'implémentation recommandé des services selon leurs dépendances et intégrations. - Ajout d'une nomenclature VM/VMID et distinction entre hôtes planifiés et hôtes actifs dans l'inventaire. - Ajout d'une interface web locale `make inventaire-ui` pour éditer et sauvegarder l'inventaire sans lancer de déploiement. - Ajustement de la nomenclature planifiée vers des noms d'hôtes par domaine afin de permettre la cohabitation de plusieurs services sur une même VM. ## 2026-06-19 ### Ajouté - Structure initiale globale du dépôt Set-OPS. - Playbooks de création du template Debian 13 Proxmox. - Rôles de base Debian. - Rôles de durcissement template-safe. - Playbook de vérification. - Playbook de nettoyage final avant conversion en template. ## 2026-06-20 ### Contexte - Clarification : `Set-OPS` est le dépôt global d’exploitation Ansible de Chezlepro Inc. - Clarification : le template Debian 13 Proxmox est un sous-ensemble du dépôt, pas sa finalité unique. - Clarification : les services applicatifs spécialisés doivent être installés sur les clones par des playbooks dédiés, pas directement dans le template. ### Ajouté - Ajout des directives renforcées dans `AGENTS.md` : - validation Ansible obligatoire ; - vérification des handlers Ansible ; - interdiction de déclarer un playbook prêt si `--syntax-check` échoue ; - préférence pour les correctifs ciblés au lieu des régénérations massives ; - rappel que `Set-OPS` ne doit pas être restructuré autour d’un seul besoin ponctuel. - Ajout d’une logique de template Debian 13 Proxmox : - `playbooks/modeles_vm/debian13_proxmox_preparer.yml` ; - `playbooks/modeles_vm/debian13_proxmox_verifier.yml` ; - `playbooks/modeles_vm/debian13_proxmox_nettoyer.yml`. - Ajout d’une couche de durcissement template-safe : - AppArmor ; - auditd ; - fail2ban SSH ; - unattended-upgrades ; - journald ; - sysctl de sécurité ; - nftables installé et préparé, mais désactivé par défaut dans le template. - Ajout d’un document d’architecture pour les intégrations futures des VM : - supervision ; - métriques ; - identité ; - PKI interne ; - DNS interne. - Documentation détaillée des ajouts appliqués au modèle doré Debian 13 Proxmox depuis une installation minimale. - Ajout d'un runbook explicite pour le playbook de préparation du modèle doré Debian 13 Proxmox. - Ajout d'un runbook manuel précis pour le bootstrap initial de la VM vanille Debian 13 : - correction des sources APT après installation depuis DVD ; - installation minimale de `sudo`, SSH, `cloud-init`, `cloud-guest-utils` et `qemu-guest-agent` ; - utilisation de Cloud-Init pour injecter le compte `ansible`, sa clé SSH, le réseau et le point de bascule vers le `Makefile`. - Ajout d'un document de cycle de vie des VM Chezlepro : - VM vanille ; - goldenisation ; - clonage ; - socle ; - durcissement ; - conformité continue. - Ajout de directives `AGENTS.md` pour la convergence des VM existantes et futures : - cycle de vie des VM ; - distinction service central et intégration cliente ; - groupes d'inventaire par intégration ; - séparation des variables de template, conformité et services. - Ajout d'un `Makefile` comme interface d'exploitation courante : - validation ; - syntax-checks ; - préparation, vérification et nettoyage protégé du template ; - socle et durcissement des VM Debian. - Durcissement SSH du template dès la construction : - accès par clé publique obligatoire ; - authentification par mot de passe désactivée ; - forwarding et tunnels SSH désactivés par défaut ; - limites de tentatives, sessions et démarrages SSH resserrées. ### Modifié - Renforcement attendu de `CLAUDE.md` pour rappeler que `AGENTS.md` est la source d’autorité principale. - Clarification du comportement attendu de Claude Code : - lire l’existant avant modification ; - vérifier `git status --short` ; - ne pas faire de régénération massive sans demande explicite ; - valider les playbooks touchés ; - signaler les tests non exécutés ; - mettre à jour `CHANGELOG.md` si pertinent. - Migration des variables de rôles vers des préfixes propres à chaque rôle pour respecter `ansible-lint`. - Mise à jour de la variable de confirmation du nettoyage final : - `template_cleanup_confirm`. - Correction de la structure du `CHANGELOG.md` pour retirer le titre dupliqué. - Simplification ciblée de l'arborescence `roles/` : - retrait des doublons non utilisés sous `roles/base/` ; - retrait des doublons non utilisés sous `roles/security/` ; - retrait des doublons non utilisés sous `roles/vm_template/`. - Ajout d'un renvoi depuis la procédure manuelle vers la justification du golden template. - Séparation documentaire et opérationnelle entre variables de template et variables de conformité. - Extension du playbook de groupe `playbooks/groupes/serveurs_debian.yml` pour maintenir le socle commun des VM Debian déployées. - Mise à jour de la documentation pour exiger un `ciuser` cloud-init avec clé publique avant l'exécution d'Ansible. - Déplacement des listes de paquets communes dans les defaults des rôles `common_packages` et `hardening_packages`. - Déplacement des variables de construction du template dans `inventories/lab/group_vars/modeles_vm.yml`. - Déplacement des variables de conformité Debian dans `inventories/production/group_vars/serveurs_debian.yml`. - Ciblage du playbook de durcissement sur `serveurs_debian` au lieu de `all`. - Renforcement du playbook de vérification du modèle doré. ### Corrigé - Vérification des rôles contenant `notify`. - Confirmation des handlers SSH requis dans les rôles concernés : - `roles/ssh_baseline/handlers/main.yml` ; - `roles/ssh_hardening/handlers/main.yml`. ### Validé - Vérification que chaque `notify` du template Debian 13 Proxmox pointe vers un handler existant. - Relance du playbook de préparation du template Debian 13 Proxmox. - Nettoyage final non lancé.