Keycloak

Rôle

Brique prévue pour le SSO/IAM applicatif (fédération d'identité pour les applications internes de l'infrastructure Indio). À ce jour, elle n'a jamais été mise en service : les deux VM provisionnées ont été détruites trois jours après leur création, avant toute installation du logiciel Keycloak lui-même.

Divergence corrigée par rapport à la version précédente de cette page

La version précédente de cette page décrivait Keycloak comme une brique dont « seul le provisioning de l'infrastructure VM est réalisé », laissant entendre que les VM existaient toujours. Ce n'est plus le cas depuis le 2026-07-07 : les VM ont été détruites à la demande explicite de l'utilisateur, avec nettoyage complet (NetBox, inventaire Ansible, aucune règle DFW dédiée à retirer). Vérifié pour cette page par inventaire complet de vCenter (aucune VM keycloak*/INDSERV012/ INDSERV013 nulle part, toutes zones confondues) et par lecture directe de terraform.tfstate (0 ressource). Voir « Contrôle de santé » ci-dessous pour la méthode de vérification, reproductible par tout lecteur de cette page.

Architecture

Cycle de vie constaté (aucune VM active aujourd'hui)

stateDiagram-v2
    [*] --> Provisionné: 2026-07-04 terraform apply<br/>keycloak-01/02 (10.100.2.141/.142)
    Provisionné --> Renommé: 2026-07-05<br/>convention IND&lt;SEGMENT&gt;NNN<br/>-> INDSERV012/013
    Renommé --> Détruit: 2026-07-07 terraform destroy -auto-approve<br/>(demande explicite : "supprime ocs postfix et keycloak glpi")
    Détruit --> [*]: État actuel (2026-07-19)<br/>terraform.tfstate = 0 ressource<br/>aucune trace dans vCenter
VM (historique) Nom d'origine IP (historique) État constaté aujourd'hui
INDSERV012 keycloak-01 10.100.2.141 N'existe plus — détruite le 2026-07-07
INDSERV013 keycloak-02 10.100.2.142 N'existe plus — détruite le 2026-07-07
  • Zone d'origine : seg-service (admin), gateway 10.100.2.190/26, clonées depuis tmpl-rocky96-hardened — comme le reste du segment.
  • Contrairement à d'autres VM détruites le même jour dans le même lot (ocs/INDSERV001, postfix-01/02/INDSERV009/010, glpi/INDSERV014), Keycloak n'a jamais été redéployée sous un nouveau numéro — OCS a été recréée en INDSERV026, GLPI en INDSERV025, Postfix a été redéployé plus tard sur INDSERV009/010 (voir Services métiers). Les numéros 012/013 restent vacants dans la séquence seg-service (INDSERV011 puis INDSERV015 — ce dernier étant une VM Windows hors IaC sans rapport, voir Durcissement Active Directory).
  • Ceci résout l'ambiguïté laissée par la convention de nommage (documentée comme « décommissionnés ou renumérotés depuis ») : c'est bien une décommission pure, sans renumérotation.

Provisioning Terraform

Fichiers : main.tf, variables.tf, versions.tf, terraform.tfvars.example. Le code ci-dessous reste présent et syntaxiquement valide dans le dépôt /root/keycloak — un terraform apply le rejouerait tel quel et recréerait deux VM nues — mais ne correspond à aucune ressource vivante aujourd'hui.

  • Providers hashicorp/vsphere (>= 2.6.0) et e-breuninger/netbox (>= 5.0.0, < 6.0.0) — schéma identique aux autres dépôts VM de l'infra.
  • vsphere_virtual_machine.keycloak en for_each sur var.nodes (défaut : INDSERV012/013), IP réservées via data.netbox_ip_addresses (provider NetBox), personnalisation clone (hostname, domaine, IP/masque/gateway/DNS).
  • output vms : map nom → IP.
  • Variables sensibles (vsphere_password, netbox_token) marquées sensitive = true ; seul terraform.tfvars.example (valeurs CHANGE_ME) est versionné, le vrai terraform.tfvars est gitignoré.
  • terraform.tfstate local contient "resources": [] (serial 16) — un état cohérent avec la réalité vivante (pas de drift caché), mais qui résulte de la destruction du 2026-07-07 et non d'un état initial jamais appliqué. Les fichiers terraform.tfstate.*.backup du dépôt montrent l'historique : serial 4 (VM nommées keycloak-01/-02), serial 6 (VM renommées INDSERV012/013), avant de retomber à 0 ressource.
  • Historique git (git log --oneline) : 4 commits, du provisioning initial (ad7e92c) au raccordement NetBox (7ebf35f) — aucun commit ne trace la destruction elle-même, cohérent avec le fait que terraform.tfstate n'est jamais suivi par git dans les dépôts de ce projet (gitignoré comme partout ailleurs).

Configuration Ansible

Aucun dossier ansible/ dans ce dépôt, et ceci n'a jamais changé : les VM ont été détruites avant qu'une quelconque installation applicative (paquet/conteneur Keycloak, realms, base de données, fédération d'identité) n'ait pu être envisagée. Il n'y a donc aucune configuration Ansible existante ni obsolète à documenter ici — l'absence est totale depuis l'origine du projet, pas seulement depuis la destruction.

Procédure de déploiement

Hypothétique : rien de tout cela n'a jamais été exécuté au-delà de l'étape 1

Cette section décrit ce qu'impliquerait un redéploiement complet aujourd'hui, pas une procédure déjà validée en conditions réelles pour la partie applicative.

  1. terraform apply (racine du dépôt /root/keycloak) — recréerait deux VM nues INDSERV012/013 sur seg-service, à partir du code inchangé depuis 2026-07-05.
  2. Enregistrement NetBox/inventaire Ansible de la flotte (baseline, populate.py) — retiré lors du nettoyage du 2026-07-07, à refaire manuellement en cas de redéploiement (voir Convention de nommage).
  3. Installation et configuration du service Keycloak lui-même (paquet ou conteneur, base de données, realms, clients OIDC/SAML, fédération avec FreeIPA/AD) : aucun playbook Ansible n'existe pour cette étape, à écrire intégralement — contrairement à FreeIPA ou Vault, ce composant n'a jamais eu de couche Ansible, même avant sa destruction.

Contrôle de santé / Vérification

Méthode utilisée pour établir l'état de cette page (reproductible) :

# 1. terraform.tfstate local : 0 ressource = rien géré par ce dépôt
python3 -c "import json; print(json.load(open('/root/keycloak/terraform.tfstate'))['resources'])"

# 2. Recherche exhaustive dans vCenter (aucune limitation de dossier —
#    couvre les VM "orphelines" hors IaC, ex. dossier "Discovered virtual
#    machine")
govc find / -type m | grep -i 'keycloak\|012\|013'
# -> aucun résultat

# 3. Historique de decommission (si accès à la mémoire projet)
grep -i keycloak <mémoire indio-decommission-2026-07-07>

Les trois méthodes convergent : Keycloak n'existe sous aucune forme dans l'infrastructure Indio au 2026-07-19.

Points d'attention

Détruit le 2026-07-07 en tant que VM nue jamais mise en service

À la demande du user (« supprime ocs postfix et keycloak glpi »), les deux VM (INDSERV012/013) ont été détruites via terraform destroy -auto-approve, dans le même lot que ocs/postfix-01/02/glpi — toutes qualifiées de « VM nues du 2026-07-04 jamais mises en service ». Nettoyage complet confirmé (NetBox VM+interface+IP, populate.py, baseline/ansible/inventory.ini). Aucune règle DFW dédiée n'existait pour Keycloak (seg-service est en zone admin, DFW default-ALLOW), donc rien à retirer côté NSX.

  • Le rôle fonctionnel réel de Keycloak dans l'infra reste non défini — aucune configuration, aucun realm, aucune intégration (Vault, FreeIPA/AD, applications consommatrices) n'a jamais existé, y compris avant la destruction. Toute reprise de ce projet repart entièrement de zéro, y compris pour la conception applicative.
  • Si ce composant redevient nécessaire, envisager de le renuméroter directement (nouveau nom de VM en fin de séquence seg-service, comme cela a été fait pour OCS et GLPI) plutôt que de réutiliser INDSERV012/ 013 — cohérent avec la règle « ne jamais réutiliser un numéro libéré quand le segment reste partiellement occupé » (voir Convention de nommage).
  • apply.log (log brut du terraform apply du 2026-07-04) reste présent dans le dépôt ; il ne contient aucune valeur sensible (vsphere_password/netbox_token marqués sensitive, masqués dans la sortie), mais documente l'historique de nommage keycloak-01/02 avant renommage — sans rapport avec la destruction ultérieure, non tracée dans ce fichier.