This repository has been archived on 2026-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
Set-OPS/roles/serveurs_keycloak
Daniel Allaire 33b1933a6d Rendre explicites les bindings appli<->BD (consommateur, multi-BD)
Modele:
- Chaque base porte un "consommateur" (le groupe applicatif qui l'utilise) et un
  "usage" (principale/cache...). Une application peut avoir plusieurs bases.
- Le binding appli<->base n'est plus une convention de nom mais un champ gere.

Regles partagees (inventory_rules): consommateur requis a la validation;
helper bases_du_groupe(registre, groupe).

GUI (make inventaire-ui):
- Vue "Bases": menu deroulant Consommateur + champ Usage par base -> on fait les
  connexions ici; plusieurs bases par appli supportees.
- Vue "Chaine" detaillee: chaque groupe affiche ses roles ET ses bases avec leur
  chaine de connexion (appli -> base -> serveur de BD -> hote).

CLI (bases_donnees.py): ajouter-base --consommateur --usage; lister affiche
"base <- consommateur (usage): DSN".

Roles serveurs_keycloak / serveurs_forgejo / serveurs_icinga: resolution de leur
base par consommateur (groupe), plus de cle codee en dur.

Valide: ansible-lint (roles), node --check (JS), round-trips GUI et CLI,
multi-BD verifie (serveurs_web_dorsaux -> 2 bases), make inventaire-verifier.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 19:44:05 -04:00
..
defaults Rendre explicites les bindings appli<->BD (consommateur, multi-BD) 2026-06-22 19:44:05 -04:00
handlers Construire l'ecosysteme de services et outiller l'inventaire 2026-06-22 18:06:11 -04:00
tasks Rendre explicites les bindings appli<->BD (consommateur, multi-BD) 2026-06-22 19:44:05 -04:00
templates Construire l'ecosysteme de services et outiller l'inventaire 2026-06-22 18:06:11 -04:00
README.md Construire l'ecosysteme de services et outiller l'inventaire 2026-06-22 18:06:11 -04:00

serveurs_keycloak

SSO / IAM Keycloak (distribution Quarkus) — hub d'authentification centralisée (OIDC/SAML) pour les services Chezlepro.

Rôle

  • Installe un JRE, télécharge et extrait la distribution Keycloak dans /opt/keycloak.
  • Configure la base PostgreSQL via le registre docs/bases-donnees.yml (entrée keycloak).
  • Publie derrière serveurs_nginx (TLS à l'edge) : hostname, proxy-headers=xforwarded, http-enabled=true.
  • Secrets (mot de passe BD + admin bootstrap) dans /etc/keycloak/keycloak.env (0640, no_log).
  • kc.sh build --db=postgres (une fois par version) puis service systemd start --optimized.

Premier consommateur du registre de BD

L'entrée keycloak de docs/bases-donnees.yml fait que :

  1. serveurs_postgresql crée la base keycloak + le compte propriétaire keycloak.
  2. Ce rôle lit la même entrée pour bâtir sa connexion (db-url-database, db-username, mot de passe = vault_bd_keycloak).

Mot de passe partagé, source unique. Dépendance serveurs_keycloak requiert serveurs_postgresql actif déjà dans docs/dependances-groupes.yml.

Secrets requis (Vault)

serveurs_keycloak_admin_password: "{{ vault_keycloak_admin }}"   # admin bootstrap
vault_bd_keycloak: "..."                                          # mot de passe BD (partage avec postgres)

Variables principales

Variable Défaut Rôle
serveurs_keycloak_version 26.0.7 Version (à vérifier/bumper sur keycloak.org/downloads)
serveurs_keycloak_hostname keycloak.chezlepro.internal Hostname public (via nginx)
serveurs_keycloak_db_host 10.1.13.11 IP de data-01 (serveurs_postgresql)
serveurs_keycloak_admin_user admin Admin bootstrap

Notes / limites

  • Version : à confirmer/bumper ; l'URL suit le motif officiel des releases GitHub.
  • L'unité systemd est dérivée des conventions Keycloak (la doc officielle ne fournit pas d'unité) — sandboxing volontairement modéré pour ne pas casser le démarrage.
  • Le site nginx publiant Keycloak se déclare côté serveurs_nginx (serveurs_nginx_sites), pas ici.
  • Certificats : TLS terminé à l'edge ; aucun certificat sur Keycloak.

Prérequis

  • Réseau sortant pour télécharger la distribution.
  • Base PostgreSQL atteignable (dépendance serveurs_postgresql).