Vous regardez une version antérieure (v. /display/INFRA/GorgLdapDaemon) 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. 4) afficher la version suivante »

Date de lancementSeptembre 2016
État du ServicePRODUCTION
ConcepteursAlexandre Narbonne
Sourceshttps://github.com/gadzorg/gorg_ldap_daemon
Clés de routage écoutées
request.ldapd.account.update
request.ldapd.account.delete
request.ldapd.group.update
request.ldapd.group.delete
notify.account.created
notify.account.updated
notify.account.deleted
notify.group.created
notify.group.updated
notify.group.deleted
Clés de routage émises

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

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ébergementHeroku
CaractéristiquesApp rec-ldap-daemon sur appartenant à l'utilisateur [email protected]
Resources
  • LDAP de recette : utilisateur cn=admin,dc=rec,dc=gadz,dc=org
  • GrAM de production : utilisateur admin

Production

HébergementHeroku
CaractéristiquesApp ldap-daemon sur appartenant à l'utilisateur [email protected]
Resources
  • LDAP de production : utilisateur cn=ldap_daemon,ou=security,dc=gadz,dc=org, admin
  • GrAM de production : utilisateur prod-gorg-ldap-daemon

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

Exemple de fichier config/config.yml
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 :

Il suffit d'activer ou désactiver le dyno worker

En local :

Lancer l'executable bin/worker pour démarrer le service

Ctrl+C pour le couper ou envoyer SIGINT (kill -2)

Installation

Infos pour les Dev'

Notifications générées

Clé de routageQuand ?Contenu du messageExemple de contenu

 

N'oubliez pas de mettre à jour la propriétés "Clés de routage émises" de la page avec les nouvelles routing keys

Changement des spécifications

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 routageCommentaires

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 routageActions effectuéesContenu du messageExemple 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 :

  • Les identifiants de connexion
  • Les alias de connexion
  • les appartenances aux groupes
  • les rôles

-> Lien vers l'implémentation

le message doit contenir a clé "uuid". Le format du uuid n'est pas validé.
{
	"uuid":"09b6f184-3a53-4e91-90ef-97a56463882d"
}
request.ldapd.account.delete

Supprime le compte du LDAP

-> Lien vers l'implémentation

le message doit contenir a clé "uuid". Le format du uuid n'est pas validé.
{
	"uuid":"09b6f184-3a53-4e91-90ef-97a56463882d"
}
request.ldapd.group.update

Récupère les dernière information du groupe depuis le GrAM.

Insère les informations dans le LDAP

-> Lien vers l'implémentation  

le message doit contenir a clé "cn". Le format n'est pas validé.
{
	"cn":"roots"
}
request.ldapd.group.delete

Supprime le groupe

-> Lien vers l'implémentation

le message doit contenir a clé "cn". Le format n'est pas validé.
{
	"cn":"roots"
}

N'oubliez pas de mettre à jour la propriétés "Clés de routage écoutées" de la page avec les nouvelles routing keys

Changement des spécifications

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 routageActions effectuées
notify.account.createdConvertie l'attribue key en attribue uuid et transfère le message à request.ldapd.account.update
notify.account.updatedConvertie l'attribue key en attribue uuid et transfère le message à request.ldapd.account.update
notify.account.deletedConvertie l'attribue key en attribue uuid et transfère le message à request.ldapd.account.delete
notify.group.createdConvertie l'attribue key en uuid et l'attribue changes.short_name en cn et transfère le message à request.ldapd.group.update
notify.group.updatedConvertie l'attribue key en uuid et l'attribue changes.short_name en cn et transfère le message à request.ldapd.group.update
notify.group.deletedConvertie l'attribue key en uuid et l'attribue changes.short_name en cn et transfère le message à request.ldapd.group.delete

N'oubliez pas de mettre à jour la propriétés "Clés de routage écoutées" de la page avec les nouvelles routing keys