From bdbf7d8317557c8211cd616865a87cce1f149b18 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Wed, 30 Sep 2026 01:12:03 -0400 Subject: [PATCH] keycloak : un client absent ne fait plus echouer les mappers de groupes et de roles Sous set -euo pipefail, grep sans correspondance sortait AVANT la branche client absent. Trouve par la reconstruction de Technolibre (plus de client forgejo). Co-Authored-By: Claude Opus 5.5 --- roles/serveur_keycloak/tasks/claim-groupes.yml | 5 ++++- roles/serveur_keycloak/tasks/rbac-oidc.yml | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/roles/serveur_keycloak/tasks/claim-groupes.yml b/roles/serveur_keycloak/tasks/claim-groupes.yml index fced9a3..effcb7d 100644 --- a/roles/serveur_keycloak/tasks/claim-groupes.yml +++ b/roles/serveur_keycloak/tasks/claim-groupes.yml @@ -21,7 +21,10 @@ "$KC" config credentials --server http://localhost:8080 --realm master \ --user {{ serveur_keycloak_admin_user }} --password "$KC_ADMIN_PW" >/dev/null CID=$("$KC" get clients -r {{ serveur_keycloak_realm }} -q clientId={{ item }} 2>/dev/null \ - | grep -oP '"id"\s*:\s*"\K[^"]+' | head -1) + | grep -oP '"id"\s*:\s*"\K[^"]+' | head -1 || true) + # `|| true` : un client ABSENT fait rendre 1 a `grep`, que `pipefail` propage et que + # `set -e` transforme en sortie — AVANT la branche prevue pour ce cas. Trouve par la + # reconstruction de Technolibre du 2026-09-30 (plus de client `forgejo`). if [ -z "$CID" ]; then echo "SETOPS_OK client absent"; exit 0; fi if "$KC" get clients/$CID/protocol-mappers/models -r {{ serveur_keycloak_realm }} 2>/dev/null \ | grep -q '"groupes-membres"'; then diff --git a/roles/serveur_keycloak/tasks/rbac-oidc.yml b/roles/serveur_keycloak/tasks/rbac-oidc.yml index 7c4f5e0..143fc36 100644 --- a/roles/serveur_keycloak/tasks/rbac-oidc.yml +++ b/roles/serveur_keycloak/tasks/rbac-oidc.yml @@ -12,7 +12,10 @@ "$KC" config credentials --server http://localhost:8080 --realm master \ --user {{ serveur_keycloak_admin_user }} --password "$KC_ADMIN_PW" >/dev/null CID=$("$KC" get clients -r {{ serveur_keycloak_realm }} -q clientId={{ item }} 2>/dev/null \ - | grep -oP '"id"\s*:\s*"\K[^"]+' | head -1) + | grep -oP '"id"\s*:\s*"\K[^"]+' | head -1 || true) + # `|| true` : un client ABSENT fait rendre 1 a `grep`, que `pipefail` propage et que + # `set -e` transforme en sortie — AVANT la branche prevue pour ce cas. Trouve par la + # reconstruction de Technolibre du 2026-09-30 (plus de client `forgejo`). if [ -z "$CID" ]; then echo "SETOPS_OK client absent"; exit 0; fi if "$KC" get clients/$CID/protocol-mappers/models -r {{ serveur_keycloak_realm }} 2>/dev/null \ | grep -q '"realm-roles"'; then