Arborescence des pages

Vous regardez une version antérieure (v. /wiki/display/PROJESUPGRP/Grouper+5.x) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 17) afficher la version suivante »

Contexte de cette documentation

On se place ici dans le cadre d'un établissement qui fonctionne avec la version 2.3 de Grouper et qui souhaite opérer une mise à jour de celui-ci.

Cette documentation et les procédures qui s'y rapportent sont en cours de développement et mise au point.

Apports de Grouper 5.x par rapport à  la 2.3

Par rapport à la version 2.3 que l'on avait documenté en 2017, la dernière version de Grouper (5.13.0 à l'heure où l'on début cette documentation) profite d'un certain nombre d'améliorations :

  • Une interface web unifiée : l'ensemble des manipulations (configuration des 'loaders' comprise) se fait depuis une seule et même interface  ; en 2.3 nous devions encore jonglé avec l'ancienne interface (voire l'interface light également) ;
  • Une interface Web qui permet de  quasiment tout configurer en base de données, là où en 2.3 nous devions éditer un certain nombre de fichiers de configurations ;
  • Une synchronisation des groupes vers le ldap (provisioning) s'appuyant sur les possibilités primitives de grouper via le Grouper Daemon ; nous n'avons plus besoin de PSP et de scripts supplémentaires associés.

Mode d'installation

Si la documentation officielle recommande très fortement l'usage de docker (et docker-compose) pour installer un Grouper dans un environnement fonctionnel, nous proposons ici de partir des sources, en prenant en compte une ou 2 modifications réalisées sur le fork ESUP.

Si l'usage de docker est certainement appréciable, on préfère ici être proche des sources et éviter d'utiliser un docker utilisant lui-même la distribution centos dont la fin de vie est maintenant dépassée.

On n'a aucun doute sur le fait que les prochaines versions des images Docker seront proposées sur une distribution linux supportée par une communauté et avec des openjdk/tomcat à jour également, mais ce n'est pas le cas à ce jour (octobre 2024).

L'usage d'un Grouper construit depuis les sources peut aussi faciliter le débogage (JMX remote) et la bonne prise en main de l'outil, voire éventuellement le partage de patchs/ajustements au travers de git / github.

Environnement technique

On utilise une debian bookworm avec :

  1. openjdk 17 installé par paquet
  2. apache-maven-3.9.9 installé manuellement
  3. tomcat9 installé manuellement
  4. postgresql 15 installé par paquet
  5. apache et le mod_shib par paquet

Récupération des sources

cd /opt
git clone https://github.com/EsupPortail/grouper-esup.git
cd /opt/grouper-esup
git checkout -b grouper-esup-5 origin/grouper-esup-5

Compilation

cd /opt/grouper-esup/grouper-parent
mvn clean install

Pour que gsh fonctionne il faut également forcer la récupérer des dépendances ainsi :

cd /opt/grouper-esup/grouper
mvn dependency:copy-dependencies

Apache, mod_shib, Postgresql, Tomcat, ...

L'installation de ces différents composants ne change pas vraiment par rapport à la version 2.3,  notons simplements quelques points :

  • Côté Tomcat, on modifiera le server.xml pour définir le contexte /grouper ainsi : 
<Context docBase="/opt/grouper-esup/grouper-misc/webapp/grouper-ui-webapp/target/grouper-ui-webapp-5.0.0-SNAPSHOT.war" path="/grouper" reloadable="false"/>	

Récupération des données et configurations de l'installation de Grouper 2.3

Configurations :

Vous pouvez récupérer l'essentiel de vos configurations via simples copies des fichiers properties donnés dans le répertoire grouper/conf

Pour la partie PSP (fichiers XML) qui n'est plus nécessaire, voir ci-après. 
Il faudra cependant fournir un fichier subject.properties en conséquence.

Dans le fork esup, nous proposons ces fichiers d'exemple à modifier pour s'adapter à votre ldap notamment :

  • grouper/conf/grouper-loader.properties
  • grouper/conf/grouper.hibernate.properties
  • grouper/conf/grouper.properties
  • grouper/conf/morphString.properties
  • grouper/conf/subject.properties

Base de données

Un dump et restore postgresql de la base grouper doit pouvoire fonctionner.

Voir ci-après pour la mise à jour via DDL.

GSH

On pourra lancer gsh ainsi (le répertoire de lancement est important, la récupération des dépendances, cf ci-dessous, est requise) :

cd /opt/grouper-esup/
./grouper/bin/gsh.sh

Grouper Daemon

Avec un gsh fonctionnel on pourra lancer le grouper dameon via un systemd ainsi configuré - fichier /etc/systemd/system/grouper-loader-daemon.service


# Systemd unit file for grouper-loader-daemon
[Unit]
Description=Synchro incrementale grouperloader (bases de données) vers grouper
After=syslog.target network.target

[Service]
EnvironmentFile=/opt/grouper-env
ExecStart=/opt/grouper-esup/grouper/bin/grouper-loader-daemon

User=grouper
Group=grouper

[Install]
WantedBy=multi-user.target

Mise à jour de la base de données

Dans un premier temps, si le tomcat ne se lance pas, repérez les DDL à lancer.

Dans les logs tomcat, vous trouverez

/opt/tomcat-grouper/logs/catalina.out:2024-10-09 17:08:52 ERROR GrouperDdlUtils:880 - Run this DDL:
/opt/tomcat-grouper/logs/catalina.out-/opt/grouper-esup/grouper/ddlScripts/grouperDdl_20241009_17_08_52_712.sql

Lancez alors les DDL manuellement depuis psql (\i) sous l'utilisateur utilisé par grouper.

Une fois le tomcat et le grouper daemon lancé, la mise à jour de la base de données se fait via l'interface web (pas besoin ainsi de lancer manuellement chaque DDL).

Si tout se passe bien, l'ensemble de vos groupes et configurations sont ainsi restés compatibles avec cette nouvelle version de grouper.

Ldap Provisionning

Passage de PSP au Ldap Provisionning

Une partie des configurations Ldap sont données dans les fichiers

La logique des nouvelles versions de Grouper est de privilégier les configurations en base de données (permettant ainsi de tout avoir en base et de faciliter les montées de version en passant d'un container docker à un autre proposant une version plus à jour de grouper).

Aussi l'interface graphique permet de saisir l'ensemble des configurations permettant cette synchro grouper→ldap depuis le menu Home > Miscellaneous > Provisioning.

La configuration est cependant assez ardue, même en utilisant la facilité du "Ldap 'start with'" lorsqu'on ajoute un provisionner.

Si vous avez une configuration qui suit les recommandations supann et ce qu'on présentatit dans la documentation à propos de la version de grouper 2.3 (usage de groupOfNames, groupes à plat, overlay pour le memberOf, ...), le "start with" avec "flatGroupsWithMembershipDNs" aide grandement mais quelques subtilités restent à préciser.

Aussi nous proposons ici une configuration que l'on a exportée et que vous pouvez importer via l'interface web depuis Home > Configure >  Configuration files : grouper-loader.properties

Une fois le group-loader.properties importée, vous retrouvez dans  Home > Miscellaneous > Provisioning le provisionner ldapGroups.

N'hésitez pas alors à lancer l'outil de "Dignostics".

Daemons de synchro → ldap

2 daemons doivent être définis : CHANGE_LOG_consumer_ldapGroupgSyncInc et OTHER_JOB_ldapGroupgSyncFull - si ce n'est pas le cas aoutez les 

  • le premier, de type edu.internet2.middleware.grouper.app.provisioning.ProvisioningConsumer, permet de faire la synchro régulière toutes les minutes 
  • le deuxième, de type edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob,
     permet de consolider au besoin l'enseble

Configuration des dossiers à provisionner

Pour chaque dossier 'racine', vous pouvez indiquer qu'ils doivent être reversés dans votre LDAP.

Copies d'écran d'interfaces indiquant que les daemons jobs ldap sont fonctionnels

Web Service

→ à faire

Purges

La purge des utilisateurs qui ne sont plus présents dans le ldap et qui doivent être supprimés de Grouper ne se fait plus par gsh mais par un daemon de manière automatique

 à vérifier

Debug

Si vous avez besoin de faire du debug pour détecter un comportement suspect ou un problème, le grouperdaemon peut se lancer en mode debug comme toute application Java, à vous ensuite d'utiliser un IDE (eclipse ou idea) permettant de positionner des breakpoints et autres.

Exemple d'arguments java à ajouter au daemon :

-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n 



  • Aucune étiquette