ISIM sur Windows 2012 R2 : la galère

Dans le cadre d'un projet de migration de ITIM 5.1 vers ISIM 6, nous avons eu la malchance (il n'y a pas d'autre terme) de devoir installer ISIM (IBM Security Identity Manager) sur un serveur Windows 2012 R2.

La conclusion est sans appel : ce n'est pas fait pour. Autant l'installation sur un Linux Red Hat prend quelques heures (avec un jeu de scripts shell), autant sur Windows 2012 on peut y passer plusieurs semaines (sans mentir).

Entre les soucis de compatibilité des produits avec Windows 2012 R2 et entre eux, les programmes qui doivent être mis en mode de compatibilité Windows 7, les problèmes de droits et d'utilisateur, il faut franchement avoir envie pour utiliser ISIM sur un serveur Windows un peu récent (quoique, Windows Server 2012 R2 en étant en 2016 ce n'est pas si récent).
Bref, pour ceux qui compte faire de l'IDM sur WIndows, je déconseille carrèment d'aller chez IBM. A mon avis, ce n'est pas pour rien que cet éditeur s'oriente vers la fourniture de logiciels sous forme d'appliances / machines virtuelles, afin de s'affranchir de l'installation de la multitude de produits (DB2, ITDS, ITDI, WebSphere, IHS) qui sont autant de sources de frustrations lors de leur installation / paramétrage.

Quelques exemples au hasard...

DB2

Le port d'écoute sélectionné n'est pas toujours pris en compte

ITDS

La création du Root Suffix avec le Middleware Configuration Tool ne fonctionne pas, il vaut mieux passer par les lignes de commandes

ITDI - IBM Tivoli Directory Integrator

Pour que ITDI puisse s'installer sur un Windows 2012, il faut passer l'installateur en mode de compatibilité Windows 7. Ensuite, l'installation se poursuit sans (trop) de problèmes, jusqu'à ce que l'on veuille installer le Dispatcher ITDI utilisé par ISIM.

ITDI Dispatcher

A la fin de l'installation ITIM, on va tenter d'installer ITDI Dispatcher afin de pouvoir utiliser les adaptateurs sans agent (du type LDAP, SAP par exemple). Dans la documentation, tout parait simple : on se positionne dans le répertoire ISIM_HOME\config\adapters et on lance :

ITDI_HOME\jvm\jre\bin\java.exe -jar DispatcherInstaller_70.jar

Remarque : pour chaque produit installé, IBM vient ajouter sa propre JVM, histoire de corser les choses

Dans ce cas, sur Windows 2012 il faut en plus passer l'exécutable java (une version 1.6, waooh!)) en "mode de compatibilité" Windows 7... OK, malgré ça on n'y arrive pas non plus. [mode troll on] Le mode d'installation silencieux ne fonctionne pas non plus ; c'est vrai qu'un admin Windows qui ne peut pas faire Suivant / Suivant / Installer doit être frustré... [mode troll off]

La documentation IBM (technote http://www-01.ibm.com/support/docview.wss?uid=swg21672707) précise la manière de faire.
Au total, ce sont 4 heures de perdues sur une matinée, sans avancer d'un pouce... Une idée, à part migrer le client sur Linux ? ou AIX ?
Avec dans le log d'installation, un warning :

WARNING - There was a problem copying D:\Program\IBM\itdi\V7.1.1\win32_service

Au final il se trouve que le service "IBM Tivoli Directory Integrator (tdi)" était en cours d'exécution, et que l'installateur n'arrivait pas à accéder au répertoire. Nouvel essai en arrêtant le service (tdi), l'installation se déroule correctement (via l'interface graphique).
Mais en regardant en détail le fichier de logs, on note quand même :

SERVICE:ibmdisrv-ISIM Adapters Does not exist

Effectivement, le service n'apparaît pas dans la liste, et ne peut donc pas être lancé... Après vérification, il se trouve que je tente de faire toutes ces manipulations sur une version 7.1.1, sans Fix Pack. Peut-être et-ce la cause des problèmes. J'installe donc le Fix Pack 5 : récupération du fix pack 7.1.1-TIV-TDI-FP0005.zip, puis :

  • Arrêt du service TDI (là c'est bien précisé dans le fichier ReadMe.html)
  • Extraction de l'archive
  • Copie du jar UpdateInstaller.jar depuis le répertoire du FixPack vers le répertoire [TDI_install_dir]\maintenance
  • Lancement de l'installation du Fix Pack avec la commande
[TDI_install_dir]\bin\applyUpdates.bat -update TDI-7.1.1-FP0005.zip

Pour finir, on peut vérifier le niveau de Fix Pack avec :

[TDI_install_dir]\bin\applyUpdates.bat -queryreg
Information from .registry file in: d:\Program\IBM\itdi\V7.1.1
Edition: Identity
Level: 7.1.1.5
License: None

Fixes Applied
=-=-=-=-=-=-=
TDI-7.1.1-FP0005(7.1.1.0)

Components Installed
=-=-=-=-=-=-=-=-=-=
BASE
   -TDI-7.1.1-FP0005
SERVER
   -TDI-7.1.1-FP0005
CE
   -TDI-7.1.1-FP0005
JAVADOCS
   -TDI-7.1.1-FP0005
EXAMPLES
   -TDI-7.1.1-FP0005
EMBEDDED WEB PLATFORM
AMC
   Deferred: false


Nouvelle tentative avec ITDI 7.1.1-FP0005

Avec un compte Administrateur du domaine, une fois modifié le mode de compatibilité sur java.exe, l'installation semble se passer correctement.
Extrait du fichier DispatcherInstaller.log

Summary
-------

Installation: Successful.

54 Successes
0 Warnings
0 NonFatalErrors
0 FatalErrors

Les fichiers sont bien présents, mais le service n'est pas créé. Il n'apparait pas dans la liste des services, ni même dans la base de registres. Avec le compte Administrator local, l'installation se termine en erreur. Le répertoire timsol n'est pas créé.

Un peu dépité, je demande au client d'ouvrir un PMR chez IBM, après tout, on paie un support, autant s'en servir. Le retour d'IBM est assez clair, au vu de notre configuration : il faut passer au minimum le Fix Pack 4 sur ISIM. Je cite :

'Support for Windows 2012 R2 installation platform was only introduced in ISIM 6.0.0.2.  In addition to that, support for running ISIM in WAS 8.5.5 was introduced even later in 6.0.0.3, and support for using DB2 v10.5 introduced at 6.0.0.4, so my recommendation would be to install the Recommended Fixes for ISIM at your earliest opportunity'

La solution

Finalement, l'installation du Dispatcher a pu se terminer correctement, après plusieurs actions :

  • Installation du Fix Pack ISIM (Fix pack 6.0.0.10)
  • Lancement de la fenêtre de commande en mode admin (Clic Droit + Run as administrator), même avec un compte Administrator local (J'avoue que parfois la logique de Windows m'échappe !)
  • Nettoyage du fichier %TDI_HOME%/etc/global.properties : à force de faire des tentatives, celui-ci contenait plusieurs fois les lignes sur le paramétrage SOLDIR (cf. ci-dessous)

Concernant le fichier global.properties, chaque installation crée une version de backup, mais complète le fichier avec un ensemble de lignes (en fin de fichier). En cas d'échec de l'installation, on peut donc se retrouver avec un ensemble de lignes telles que :

ADAPTER_SOLDIR="D:\Program\IBM\itdi\V7.1.1\timsol"
com.ibm.di.dispatcher.registryPort=10991
com.ibm.di.dispatcher.objectPort=0
com.ibm.di.dispatcher.bindName=ITDIDispatcher
com.ibm.di.dispatcher.ssl=false
com.ibm.di.dispatcher.ssl.clientAuth=false
com.ibm.di.dispatcher.disableConnectorCache=false
ITDI_HOME=D:\Program\IBM\itdi\V7.1.1
ADAPTER_SOLDIR=""
com.ibm.di.dispatcher.registryPort=10991
com.ibm.di.dispatcher.objectPort=0
com.ibm.di.dispatcher.bindName=ITDIDispatcher
com.ibm.di.dispatcher.ssl=false
com.ibm.di.dispatcher.ssl.clientAuth=false
com.ibm.di.dispatcher.disableConnectorCache=false
ITDI_HOME=D:\Program\IBM\itdi\V7.1.1

Notez la variable ADAPTER_SOLDIR dont la valeur est à blanc, lors du deuxième essai...

Adaptateur Lotus Notes

Le projet consistait à migrer de ITIM 5.1 vers ISIM 6. En l'occurence, nous avions déjà un service Lotus. Nous avons fait pointer sur un nouvel agent Lotus Notes 6. Souci rencontré : sur l'ancien serveur (avec Adaptateur V5), la réconciliation se fait bien. Sur le nouveau serveur, pas moyen de faire discuter ISIM et l'agent Notes. En regardant dans les logs (trace.log) on voit des erreurs sur une classe d'objet ernotesgrouplist.

Après pas mal d'investigation dans les logs de ITDS, je me rends compte que entre la version 5 et la version 6 de l'adaptateur Notes, la classe d'objet erNotesAccount a été modifiée. En version 5.1, la classe contenait un attribut erNotesLTPAUsrNm :

( 1.3.6.1.4.1.6054.3.25.2.152 NAME 'erNotesLTPAUsrNm' DESC 'LTPA User name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )

Dans la version 6, cet attribut a disparu. Qui plus est, un nouvel attribut est ajouté dans la classe d'objet ernotesgrouplist, avec le même OID !

Dans la V6, fichier schema.dsml de l'adaptateur :

( 1.3.6.1.4.1.6054.3.25.2.152 NAME 'erNotesGrpMemberGroups' DESC 'List of groups that are member of this group' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

Du coup, le nouvel attribut erNotesGrpMemberGroups n'est pas ajouté au schéma, et la classe d'objet ernotesgrouplist ne peut pas être créée. De ce fait, ISIM n'arrive pas à communiquer avec l'agent.

Autre problème, sur l'attribut erNotesEncryptIncomingMail, la syntaxe change entre les versions. Dans la version 5.1, nous avions une syntaxe 1.3.6.1.4.1.1466.115.121.1.15 (CaseIgnoreString), alors que la version 6 a une syntaxe 1.3.6.1.4.1.1466.115.121.1.7.

L'adaptateur LotusNotes (NotesAdapter.jar) a été modifié, pour changer la syntaxe dans le fichier dsml, puis importé dans la console ISIM.

Une fois la modification faite dans le schéma (V3.modifiedschema) , ISIM peut réconcilier le service Lotus.

 

WebSphere AS

 

ISIM - Fix Pack

L'installation des Fix Packs ISIM nécessite une version 7.x de l'UpdateInstaller WebSphere, même lorsque l'application est executée dans un WAS 8.5.5.
L'installation de l'UpdateInstaller se passe bien, en mode graphique tout au moins car une tentative de l'installer en mode silencieux ne donne rien, même en prenant en exemple le fichier de configuration fourni. L'installation du Fix Pack ISIM 6.0.0.10 s'est ensuite déroulée correctement. Lors du processus, il faut avoir sous la main le login et le mot de passe du compte utilisé pour la base de données.
J'ai eu un souci suite à l'abandon dans la phase de mise en place du Fix Pack : en relançant UpdateInstaller, celui-ci détecte que le dernier niveau de patch est installé (via la version trouvée dans le fichier ISIM_HOME\properties\version\ITIM.product). On peut corriger le tir en modifiant ce fichier et en changeant la version manuellement (par exemple mettre 6.0.0.5 pour installer un Fix Pack 10).

Attention en modifiant le fichier : vérifier que la syntaxe XML est correcte. Dans le cas contraire, on aura le message "CWUPI0012E : A supported product could not be detected at the specified location." C'est le souci que j'ai eu, lorsque j'ai enlevé le début d'une balise XML... Ce type de problème peut également arriver si le répertoire properties est inexistant, voir à ce propos la technote IBM : https://www-304.ibm.com/support/entdocview.wss?uid=swg21636666

En synthèse

Pour une installation qui devrait prendre une journée, ou deux au maximum, on peut y passer plusieurs semaines. Je trouve cela inacceptable de la part d'un éditeur de la taille d'IBM ; ce n'est pas une version d'O.S. exotique, on se demande vraiment si tout cela est testé et surtout si c'est en place chez d'autres clients...

Il manque surtout un récapitulatif des versions de logiciels testés et supportés sur l'O.S. : une page qui listerait les versions à mettre en place pour que tout fonctionne correctement... Est-ce si difficile ?

Au final, nous avons une plate-forme qui fonctionne sur la base des versions suivantes :

 

Produit Version
DB2 10.5 FP7
ITDS/ISDS 6.3 FP42
ITDI 7.1.1 FP5
WebSphere AS 8.5.5.9
ISIM 6.0.0.10

Pour récupérer toutes les informations d'une configuration ISIM, IBM fournit un outil serviceability http://www-01.ibm.com/support/docview.wss?uid=swg21330442 WINDOWS: %ISIM_HOME%\bin\win\serviceability.cmd

Catégorie

Nous avons procédé en 2 étapes, comme IBM le recommande : upgrade ITIM 5.1 vers ISIM6 sur place, sur un serveur Windows 2008R2, avec WAS 7. Puis installation de la nouvelle "stack" (DB2 10.5, ISDS 6.3, WAS 8.5.5) sur Windows 2012 R2, et c'est là que les soucis arrivent....