diff --git a/README.md b/README.md index 6112ca7..20a8bba 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## Services fournis - Installation d'un serveur PEWS pour fournir le service webfinger sur un serveur docker_host - +- Peuplement du serveur PEWS en fichiers json à partir du serveur LDAP ## Variables @@ -15,15 +15,23 @@ Fournir les variables suivantes. Par exemple : docker_webfingerserver_local_domain: libretic.fr docker_webfingerserver_data_dir: /data1 docker_webfingerserver_service_id: webfinger - +docker_webfingerserver_ldap_server_uri: ldap://adresse-du-serveur-ldap +docker_webfingerserver_ldap_bind_dn: uid=compte-de-service-interrogation-ldap,xxxx +docker_webfingerserver_ldap_bind_pw: son_mot_de_passe +docker_webfingerserver_ldap_usersdn: ou=utilisateurs,dc=libretic,dc=fr ``` -| Option | Valeur par défaut | Description | -|-------------------------------------|-------------------|-------------------------------------------------------------------------------------------| -| docker_webfingerserver_local_domain | | Le nom de domaine pour lequel le service webfinger répond | -| docker_webfingerserver_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | -| docker_webfingerserver_service_id | | Le nom de service souhaité : conditionne le nommage des volumes et le routage par traefik | -| | | | -| | | | +| Option | Valeur par défaut | Description | +|------------------------------------------|-------------------|-------------------------------------------------------------------------------------------| +| docker_webfingerserver_local_domain | | Le nom de domaine pour lequel le service webfinger répond | +| docker_webfingerserver_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | +| docker_webfingerserver_service_id | | Le nom de service souhaité : conditionne le nommage des volumes et le routage par traefik | +| docker_webfingerserver_ldap_server_uri | | URI de connexion au serveur ldap | +| docker_webfingerserver_ldap_bind_dn | | DN du compte de service de connexion à l'annuaire pour lire les informations utilisateurs | +| docker_webfingerserver_ldap_bind_pw | | Mot de passe du compte de service | +| docker_webfingerserver_ldap_usersdn | | Base de recherche des utilisateurs | +| docker_webfingerserver_ldap_users_filter | (objectClass=*) | (Facultatif) Filtre de sélection des utilisateurs | + + diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..1e64653 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1 @@ +docker_webfingerserver_ldap_users_filter: "(objectClass=*)" diff --git a/tasks/main.yml b/tasks/main.yml index a8fd444..3b66ffb 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -16,3 +16,5 @@ src: PEWS/.well-known dest: "{{ docker_webfingerserver_data_dir }}/{{ docker_webfingerserver_service_id }}/webfinger/" notify: docker-compose-up + + diff --git a/tasks/populate_webfinger_from_ldap.yml b/tasks/populate_webfinger_from_ldap.yml new file mode 100644 index 0000000..87122bc --- /dev/null +++ b/tasks/populate_webfinger_from_ldap.yml @@ -0,0 +1,30 @@ + +- name: Recherche des utilisateurs + delegate_to: localhost + community.general.ldap_search: + server_uri: "{{ docker_webfingerserver_ldap_server_uri }}" + bind_dn: "{{ docker_webfingerserver_ldap_bind_dn }}" + bind_pw: "{{ docker_webfingerserver_ldap_bind_pw }}" + dn: "{{ docker_webfingerserver_ldap_usersdn }}" + filter: "{{ docker_webfingerserver_ldap_users_filter }}" + scope: onelevel + attrs: + - uid + - mail + - memberOf + - displayName + - givenName + - sn + register: ldap_users + +- debug: + var: ldap_users.results + +- name: creation entree webfinger depuis template + template: + src: user-template.json + dest: "{{ docker_webfingerserver_data_dir }}/{{ docker_webfingerserver_service_id }}/webfinger/.well-known/webfinger/store/{{ docker_webfingerserver_local_domain }}/{{ item.uid }}.json" + with_items: + - "{{ ldap_users.results }}" + vars: + user: "{{ item }}" diff --git a/templates/user-template.json b/templates/user-template.json new file mode 100644 index 0000000..6e41c6c --- /dev/null +++ b/templates/user-template.json @@ -0,0 +1,29 @@ +{ + "subject" : "acct:{{ user.mail }}", + "properties" : + { + "http://packetizer.com/ns/name" : "{{ user.displayName }}" + }, + "aliases" : + [ + + "https://mastodon.libretic.fr/users/{{ user.uid }}" + ], + "links" : + [ + { + "rel" : "http://webfinger.net/rel/profile-page", + "type": "text/html", + "href": "https://mastodon.libretic.fr/@{{ user.uid }}" + }, + { + "rel": "self", + "type": "application/activity+json", + "href": "https://mastodon.libretic.fr/users/{{ user.uid }}" + }, + { + "rel": "http://ostatus.org/schema/1.0/subscribe", + "template": "https://mastodon.libretic.fr/authorize_interaction?uri={uri}" + } + ] +} diff --git a/templates/user.yml b/templates/user.yml deleted file mode 100644 index cfcd6ad..0000000 --- a/templates/user.yml +++ /dev/null @@ -1,42 +0,0 @@ -{ - "subject" : "acct:olivier.navas@libretic.fr", - "properties" : - { - "http://packetizer.com/ns/name" : "John Smith", - "http://blgx.example.net/ns/version" : "1.5.1", - "http://blgx.example.net/ns/ext" : null - }, - "aliases" : - [ - "https://mastodon.libretic.fr/u/olivier.navas", - ], - "links" : - [ - { - "rel" : "http://webfinger.net/rel/avatar", - "type" : "image/jpeg", - "href" : "http://example.com/images/face.png" - }, - { - "rel" : "http://webfinger.net/rel/profile-page", - "href" : "http://profile.example.com/u/smithj" - }, - { - "rel" : "http://packetizer.com/rel/blog", - "href" : "http://blog.example.com/smithj", - "titles" : - { - "en-us" : "The Adventures of John Smith", - "fr" : "Les Aventures de John Smith" - }, - "properties" : - { - "http://example.com/role" : "author" - } - }, - { - "rel" : "http://specs.openid.net/auth/2.0/provider", - "href" : "https://profile.example.com/u/smithj" - } - ] -}