Registres (source unique): - docs/nomenclature.yml: domaines, VMID, plan d'adressage 10.1.0.0/16 segmente. - docs/bases-donnees.yml: bases applicatives (1 appli -> 1 base -> 1 owner -> 1 DSN). Roles de service: - Reseau/edge/PKI/mail: nginx, step_ca, sendmail. - Donnees/identite: postgresql (consommateur du registre BD), redis, openldap, keycloak. - Observabilite: prometheus, loki, grafana. - Supervision: icinga (coeur; Icinga Web 2 differe). Forge: forgejo. Integrations clientes: - clients_metriques, clients_journaux, clients_pki, clients_ldap, clients_smtp. Inventaire et outillage: - make inventaire-ui: refonte (cartes, theme sombre, onglets, vue Chaine VM->groupes-> playbooks->roles), saisie du provisioning, auto-proposition depuis la nomenclature, deploiement securise (verifier/deployer, jeton anti-CSRF, verrou, mot de passe vault), robustesse reseau (connexions fermees, favicon). - Makefile: cible verifier-deploiement; detection d'un group_vars de production chiffre. - Scission serveurs_web -> serveurs_web_frontaux/dorsaux; migration de l'adressage vers 10.1.x; retrait des hotes de test; planification des hotes; requirements.yml. Chaque role valide en --syntax-check et ansible-lint (profil production). Secrets references depuis Ansible Vault (jamais en clair); roles non testes live. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
42 lines
2.3 KiB
Markdown
42 lines
2.3 KiB
Markdown
# 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)
|
|
```yaml
|
|
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`).
|