OPS-Patient0/inventories/production/group_vars/all/vault.yml.example
Daniel Allaire 33ca12d2db voute : vingt secrets fabriques, et deux qui restent a toi
`ansible-vault` chiffre avec la cle de voute de l'exploitant — le mot de passe n'a jamais
transite, seul son chemin. Les valeurs sont tirees au hasard (40 caracteres) et n'ont ete
affichees nulle part. La voute est ignoree par git : seul le gabarit est versionne.

CAS PARTICULIER, `vault_backup_ssh_privkey` : une VRAIE paire de cles ed25519 a ete
generee. La privee est en voute ; la PUBLIQUE est dans cle-publique-sauvegarde.txt, a
poser sur le depot restic le jour venu. Une cle publique n'est pas un secret.

DEUX SECRETS MANQUENT DELIBEREMENT — `proxmox_api_token_id` et `_secret`. Ils
n'ont pas le prefixe `vault_` et echappaient au reperage : le gabarit les nomme
desormais. Ils doivent etre CREES DANS PROXMOX, propres a patient 0 (Datacenter >
Permissions > API Tokens). Recopier le jeton d'un autre tenant leur donnerait la meme
clef, et on ne pourrait plus en revoquer un sans revoquer l'autre.

P18 refuse donc encore patient 0, et c'est le comportement voulu : la preuve attend une
action humaine, elle ne l'invente pas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 13:00:30 -04:00

51 lines
3.3 KiB
Text

---
# GABARIT de voute de patient 0 — des NOMS, jamais de valeurs.
#
# La voute reelle (group_vars/all/vault.yml, chiffree) se cree a la main :
# ansible-vault create inventories/production/group_vars/all/vault.yml
# Son mot de passe ne vit NI ici, NI dans aucun depot : c'est le seul objet que la
# reproduction exige d'un humain. Le mettre dans la forge reviendrait a enfermer la
# cle dans le coffre.
#
# P18 confronte ce gabarit aux secrets que le plan exige, puis la voute reelle a ce
# gabarit. Une cle qui manque ici passe inapercue jusqu'au deploiement.
# --- Exiges par des roles que patient 0 DEPLOIE ---
vault_backup_ssh_privkey: "" # role client_backup
vault_bd_forgejo: "" # base 'forgejo'
vault_forgejo_admin: "" # role serveur_forgejo
vault_forgejo_internal_token: "" # role serveur_forgejo
vault_forgejo_oidc: "" # role serveur_forgejo
vault_forgejo_secret_key: "" # role serveur_forgejo
vault_openldap_admin: "" # role amorcage_acces (playbook serveur_openldap.yml)
vault_postgresql_keycloak: "" # role serveur_postgresql
vault_redis: "" # role serveur_redis
vault_restic_password: "" # role client_backup
vault_step_ca_password: "" # role serveur_step_ca
vault_step_ca_provisioner_password: "" # role client_pki
# --- Exiges par le harnais, pour des services que patient 0 NE DEPLOIE PAS ---
# Ces references vivent dans des roles que patient 0 installe (ex. serveur_backup
# pousse ses resultats vers Icinga, serveur_postgresql connait les bases des
# autres). Le perimetre est donc plus large que la flotte : meme question de
# cadrage que celle corrigee sur P32 le 2026-08-20. Les laisser vides tant que le
# service correspondant n'existe pas.
vault_grafana_admin: "" # role serveur_grafana (playbook serveur_grafana.yml)
vault_grafana_oidc: "" # role serveur_grafana (playbook serveur_grafana.yml)
vault_icinga_api_depot: "" # role serveur_backup (playbook serveur_backup.yml)
vault_keycloak_admin: "" # role serveur_keycloak (playbook serveur_keycloak.yml)
vault_nextcloud_admin: "" # role serveur_nextcloud (playbook serveur_nextcloud.yml)
vault_nextcloud_oidc: "" # role serveur_nextcloud (playbook serveur_nextcloud.yml)
vault_oauth2_cookie: "" # role serveur_oauth2_proxy (playbook serveur_oauth2_proxy.yml)
vault_sysadmin_amorcage: "" # role amorcage_acces (playbook serveur_openldap.yml)
# --- Acces au CLUSTER, exiges hors motif `vault_` ---
# Ces deux-la ne commencent pas par `vault_` et echappent donc au reperage automatique :
# c'est P18 qui les exige nommement. Ils ouvrent l'API Proxmox pour cloner les VM.
#
# A CREER DANS PROXMOX, propre a patient 0 : Datacenter > Permissions > API Tokens.
# Un jeton PAR TENANT, revocable seul — recopier celui d'un autre tenant reviendrait a
# leur donner la meme clef, et a ne plus pouvoir en retirer un sans retirer l'autre.
# Les poser ensuite : ansible-vault edit inventories/production/group_vars/all/vault.yml
proxmox_api_token_id: ""
proxmox_api_token_secret: ""