Propriétés de la page | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
|
Présentation du service
Ce service a pour but de découpler la mise à jour du LDAP du fonctionnement de l'API GrAMv2
Dans la version précédente du GrAM (GrAMv1) le LDAP était utilisé comme base de donnée principale. Il ne sert maintenant plus qu'à stocker les information de connexion des utilisateurs, à destination du CAS et des différentes application utilisant une connexion LDAP
Il a été décider de passer par un micro service afin de permettre à d'autre applications de demander une mise à jour des données de connexion
Ce service est autonome est se présente sous la forme d'une application ruby stateless
Sommaire | ||
---|---|---|
|
Infos pour les Ops
Environnements
Développement
LDAP de dev avec utilisateurs admin individuel pour chaque utilisateur
VHost rabbit MQ pour chaque developpeurs
L'instance de l'API GrAMv2 est à héberger par le developpeur
Recette
Hébergement | Heroku |
---|---|
Caractéristiques | App rec-ldap-daemon sur appartenant à l'utilisateur [email protected] |
Resources |
|
Production
Hébergement | Heroku |
---|---|
Caractéristiques | App ldap-daemon sur appartenant à l'utilisateur [email protected] |
Resources |
|
Dépendances extérieures
- LDAP avec la strucure du GrAMv1 (obligatoire)
- GrAMv2 pour récupérer les informations des comptes (obligatoire)
Déploiement
Configuration
L'application fonctionne soit avec des varaibles d'environnement, soit avec un fichier de configuration.
Le fichier de configuration est situé dans config/config.yml
Bloc de code | ||||
---|---|---|---|---|
| ||||
default: &default application_name: GoogleDirectoryDaemon-test application_id: gdd rabbitmq_host: localhost rabbitmq_port: 5672 rabbitmq_vhost: / rabbitmq_queue_name: gdirdaemon rabbitmq_deferred_time: 1800000 rabbitmq_max_attempts: 48 exchange_name: exchange rabbitmq_user: my_user rabbitmq_password: P4ssWord log_routing_key: "logging.key" ldap_host: localhost ldap_port: 389 ldap_base: dc=mycompany,dc=org ldap_bind_dn: cn=myuser,dc=mycompany,dc=org ldap_password: P4ssWord development: <<: *default test: <<: *default production: <<: *default |
Tout ces attributs peuvent être indiquer en variable d'environnement en les mettant en majuscules et en prefixant le nom avec GLD_
Les variables d'environnement sont prioritaires sur le fichier de configuration
Exemple : GLD_RABBITMQ_HOST
L'environnement utilisé est défini par la variable d'environnement GORG_LDAP_DAEMON_ENV
et à pour valeur "development" par défaut
La variable d'environnement LOGGER_LEVEL
permet de définir la verbosité des logs. Les valeurs autorisées sont :
- DEBUG - valeur par défaut
- INFO
- WARN
- ERROR
- FATAL
Arret / Démarage
Sur Heroku :
Suivre la procédure Démarrer/Arrêter une application sur Heroku
En local :
Lancer l'executable bin/worker
pour démarrer le service
Ctrl+C pour le couper ou envoyer SIGINT
(kill -2
)
Accéder aux Logs
Suivre la procédure Accéder aux logs d'une application Heroku
Installation
Infos pour les Dev'
Notifications générées
Clé de routage | Quand ? | Contenu du message | Exemple de contenu |
---|---|---|---|
|
Astuce |
---|
N'oubliez pas de mettre à jour la propriétés "Clés de routage émises" de la page avec les nouvelles routing keys |
Avertissement | ||
---|---|---|
| ||
Si vous modifiez le format d'une notification existante, essayez au maximum de conserver les données précédentes et pensez à reporter les changements sur les services clients de cette notification |
Requêtes faites à d'autres services
Clé de routage | Commentaires |
---|---|
Astuce |
---|
N'oubliez pas de mettre à jour la propriétés "Clés de routage émises" de la page avec les nouvelles routing keys |
Requetes écoutées
Elles sont définies dans config/initializers/gorg_service.rb
Clé de routage | Actions effectuées | Contenu du message | Exemple de contenu | |||||||
---|---|---|---|---|---|---|---|---|---|---|
request.ldapd.account.update | Récupère les dernière information du compte depuis le GrAM. Insère les informations dans le LDAP Sont notamment insérés :
| le message doit contenir a clé "uuid". Le format du uuid n'est pas validé. |
| |||||||
request.ldapd.account.delete | Supprime le compte du LDAP | le message doit contenir a clé "uuid". Le format du uuid n'est pas validé. |
| |||||||
request.ldapd.group.update | Récupère les dernière information du groupe depuis le GrAM. Insère les informations dans le LDAP | le message doit contenir a clé "cn". Le format n'est pas validé. |
| |||||||
request.ldapd.group.delete | Supprime le groupe | le message doit contenir a clé "cn". Le format n'est pas validé. |
|
Astuce |
---|
N'oubliez pas de mettre à jour la propriétés "Clés de routage écoutées" de la page avec les nouvelles routing keys |
Avertissement | ||
---|---|---|
| ||
Si vous modifiez le format d'une requete existante, pensez à reporter les changements sur les services clients de cette requete |
Notifications écoutées
Elles sont définies dans config/initializers/gorg_service.rb
Clé de routage | Actions effectuées |
---|---|
notify.account.created | Convertie l'attribue key en attribue uuid et transfère le message à request.ldapd.account.update |
notify.account.updated | Convertie l'attribue key en attribue uuid et transfère le message à request.ldapd.account.update |
notify.account.deleted | Convertie l'attribue key en attribue uuid et transfère le message à request.ldapd.account.delete |
notify.group.created | Convertie l'attribue key en uuid et l'attribue changes.short_name en cn et transfère le message à request.ldapd.group.update |
notify.group.updated | Convertie l'attribue key en uuid et l'attribue changes.short_name en cn et transfère le message à request.ldapd.group.update |
notify.group.deleted | Convertie l'attribue key en uuid et l'attribue changes.short_name en cn et transfère le message à request.ldapd.group.delete |
Astuce |
---|
N'oubliez pas de mettre à jour la propriétés "Clés de routage écoutées" de la page avec les nouvelles routing keys |