Câbler les secrets des rôles à leur variable de voûte (vault_*)

Les rôles à secrets déclaraient serveur_X_password: "" avec la variable
de voûte seulement en commentaire — aucun mapping réel. Remplir la voûte
ne branchait donc rien (secret vide → assertion échoue).

Les 12 secrets des 8 rôles pointent maintenant vers leur source :
  serveur_X_password: "{{ vault_X | default('') }}"
Comportement inchangé si la voûte est vide ; branché dès qu'elle a le
secret. Prouvé : assertion step_ca passe avec vault_step_ca_password.
Chaque instance remplit ses vault_* ; aucun mapping par instance.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-07-01 21:29:18 -04:00
parent 4d26c15104
commit bbcf087904
9 changed files with 21 additions and 12 deletions

View file

@ -15,6 +15,15 @@
- **Compteur « vivantes »** dans l'en-tête (depuis la sonde), à côté de actifs/planifiés.
### Corrigé
- **Secrets des rôles non câblés à la voûte (échafaudage manquant).** Les rôles à
secrets déclaraient `serveur_X_password: ""` avec, en commentaire seulement, la
variable de voûte attendue (`{{ vault_X }}`) — sans mapping réel. Résultat : remplir
la voûte selon `vault.exemple.yml` ne suffisait pas, le secret restait vide et
l'assertion « secrets requis » échouait. Les 12 secrets des 8 rôles (`serveur_step_ca`,
`serveur_forgejo`, `serveur_grafana`, `serveur_keycloak`, `serveur_openldap`,
`serveur_redis`, `client_ldap`, `client_pki`) pointent désormais vers leur variable
de voûte : `serveur_X_password: "{{ vault_X | default('') }}"`. Chaque instance n'a
plus qu'à remplir ses `vault_*` dans sa voûte chiffrée ; aucun mapping par instance.
- **« Vérifier » (dry-run `--check`) échouait faussement sur un hôte frais.** Les tâches
« démarrer service » et les handlers « redémarrer / recharger / valider » des rôles
applicatifs touchent un paquet que `--check` n'installe pas réellement → le service

View file

@ -14,7 +14,7 @@ client_ldap_base_dn: "dc={{ domaine_interne.split('.') | join(',dc=') }}"
# Bind de lecture. Vide => bind anonyme (lecture publique de l'annuaire).
client_ldap_bind_dn: ""
client_ldap_bind_password: "" # {{ vault_ldap_sssd }} si un bind DN est defini
client_ldap_bind_password: "{{ vault_ldap_sssd | default('') }}" # rempli depuis la voute (vault_ldap_sssd)
# TLS : "never" tant que OpenLDAP n'expose pas LDAPS ; passer a "demand"
# avec LDAPS + confiance step_ca (client_pki).

View file

@ -14,8 +14,8 @@ client_pki_cert: "{{ client_pki_steppath }}/certs/{{ client_pki_nom_cert }}.crt"
client_pki_cle: "{{ client_pki_steppath }}/certs/{{ client_pki_nom_cert }}.key"
# Secrets OBLIGATOIRES (Ansible Vault).
client_pki_ca_fingerprint: "" # {{ vault_step_ca_fingerprint }} (empreinte racine de l'AC)
client_pki_provisioner_password: "" # {{ vault_step_ca_provisioner_password }} (partage avec serveur_step_ca)
client_pki_ca_fingerprint: "{{ vault_step_ca_fingerprint | default('') }}" # rempli depuis la voute (vault_step_ca_fingerprint)
client_pki_provisioner_password: "{{ vault_step_ca_provisioner_password | default('') }}" # rempli depuis la voute (vault_step_ca_provisioner_password)
# Depot apt officiel Smallstep (partage avec serveur_step_ca).
client_pki_depot_cle_url: "https://packages.smallstep.com/keys/apt/repo-signing-key.gpg"

View file

@ -23,8 +23,8 @@ serveur_forgejo_db_host: "10.0.13.11" # data-01
serveur_forgejo_smtp: "infra-mail-01.{{ domaine_interne }}"
# Secrets OBLIGATOIRES (Ansible Vault).
serveur_forgejo_secret_key: "" # {{ vault_forgejo_secret_key }}
serveur_forgejo_internal_token: "" # {{ vault_forgejo_internal_token }}
serveur_forgejo_secret_key: "{{ vault_forgejo_secret_key | default('') }}" # rempli depuis la voute (vault_forgejo_secret_key)
serveur_forgejo_internal_token: "{{ vault_forgejo_internal_token | default('') }}" # rempli depuis la voute (vault_forgejo_internal_token)
serveur_forgejo_admin_user: "forgejo-admin"
serveur_forgejo_admin_email: "admin@{{ domaine_interne }}"
serveur_forgejo_admin_password: "" # {{ vault_forgejo_admin }}
serveur_forgejo_admin_password: "{{ vault_forgejo_admin | default('') }}" # rempli depuis la voute (vault_forgejo_admin)

View file

@ -14,7 +14,7 @@ serveur_grafana_prometheus_url: "http://localhost:9090"
serveur_grafana_loki_url: "http://localhost:3100"
# Secret OBLIGATOIRE (Ansible Vault).
serveur_grafana_admin_password: "" # {{ vault_grafana_admin }}
serveur_grafana_admin_password: "{{ vault_grafana_admin | default('') }}" # rempli depuis la voute (vault_grafana_admin)
# Depot apt officiel Grafana (partage avec serveur_loki).
serveur_grafana_depot_cle_url: "https://apt.grafana.com/gpg-full.key"

View file

@ -18,4 +18,4 @@ serveur_keycloak_db_host: "10.0.13.11"
# Secrets (Ansible Vault) — obligatoires.
serveur_keycloak_admin_user: "admin"
serveur_keycloak_admin_password: "" # {{ vault_keycloak_admin }}
serveur_keycloak_admin_password: "{{ vault_keycloak_admin | default('') }}" # rempli depuis la voute (vault_keycloak_admin)

View file

@ -14,7 +14,7 @@ serveur_openldap_base_dn: "dc={{ serveur_openldap_domaine.split('.') | join(',dc
serveur_openldap_admin_dn: "cn=admin,{{ serveur_openldap_base_dn }}"
# Secret OBLIGATOIRE (Ansible Vault).
serveur_openldap_admin_password: "" # {{ vault_openldap_admin }}
serveur_openldap_admin_password: "{{ vault_openldap_admin | default('') }}" # rempli depuis la voute (vault_openldap_admin)
# Unites organisationnelles de base.
serveur_openldap_ou:

View file

@ -15,4 +15,4 @@ serveur_redis_maxmemory: "256mb"
serveur_redis_maxmemory_policy: "allkeys-lru"
# Mot de passe OBLIGATOIRE (expose sur le reseau interne). Ansible Vault.
serveur_redis_password: "" # {{ vault_redis }}
serveur_redis_password: "{{ vault_redis | default('') }}" # rempli depuis la voute (vault_redis)

View file

@ -23,5 +23,5 @@ serveur_step_ca_provisioner: "admin@{{ domaine_interne }}"
serveur_step_ca_acme: true
# Secrets (Ansible Vault) — obligatoires pour l'initialisation.
serveur_step_ca_password: "" # {{ vault_step_ca_password }}
serveur_step_ca_provisioner_password: "" # {{ vault_step_ca_provisioner_password }}
serveur_step_ca_password: "{{ vault_step_ca_password | default('') }}" # rempli depuis la voute (vault_step_ca_password)
serveur_step_ca_provisioner_password: "{{ vault_step_ca_provisioner_password | default('') }}" # rempli depuis la voute (vault_step_ca_provisioner_password)