From 6c1c728acb2a40bc45ee3b28047168341e8a170e Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sun, 27 Apr 2025 15:56:17 +0200 Subject: [PATCH] Solved ldap schema bug --- .../templates/docker-compose.yml.j2 | 6 ++-- .../tasks/create_nextcloud_schema.yml | 32 +++++++++++++++++ roles/docker-ldap/tasks/main.yml | 36 ++++--------------- 3 files changed, 41 insertions(+), 33 deletions(-) create mode 100644 roles/docker-ldap/tasks/create_nextcloud_schema.yml diff --git a/roles/docker-espocrm/templates/docker-compose.yml.j2 b/roles/docker-espocrm/templates/docker-compose.yml.j2 index c90c9a4b..32de1f0f 100644 --- a/roles/docker-espocrm/templates/docker-compose.yml.j2 +++ b/roles/docker-espocrm/templates/docker-compose.yml.j2 @@ -3,7 +3,7 @@ services: {% include 'roles/docker-central-database/templates/services/' + database_type + '.yml.j2' %} web: - image: espocrm/espocrm:{{ applications.espocrm.version }} + image: espocrm/espocrm:{{ applications[application_id].version }} {% include 'roles/docker-compose/templates/services/base.yml.j2' %} healthcheck: test: ["CMD", "curl", "-f", "http://localhost/"] @@ -15,7 +15,7 @@ services: - data:/var/www/html daemon: - image: espocrm/espocrm:{{ applications.espocrm.version }} + image: espocrm/espocrm:{{ applications[application_id].version }} restart: {{docker_restart_policy}} logging: driver: journald @@ -25,7 +25,7 @@ services: - data:/var/www/html websocket: - image: espocrm/espocrm:{{ applications.espocrm.version }} + image: espocrm/espocrm:{{ applications[application_id].version }} restart: {{docker_restart_policy}} logging: driver: journald diff --git a/roles/docker-ldap/tasks/create_nextcloud_schema.yml b/roles/docker-ldap/tasks/create_nextcloud_schema.yml new file mode 100644 index 00000000..00ff7cb4 --- /dev/null +++ b/roles/docker-ldap/tasks/create_nextcloud_schema.yml @@ -0,0 +1,32 @@ +- name: "pkgmgr install" + include_role: + name: pkgmgr-install + vars: + package_name: ldapsm + +- name: Ensure custom LDAP schema snippet via ldapsm + vars: + schema_name: "nextcloud" + attribute_defs: + - "( 1.3.6.1.4.1.99999.1 NAME 'nextcloudQuota' DESC 'Quota for Nextcloud' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )" + objectclass_defs: + - "( 1.3.6.1.4.1.99999.2 NAME 'nextcloudUser' DESC 'Auxiliary class for Nextcloud attributes' AUXILIARY MAY ( nextcloudQuota ) )" + command: > + ldapsm + -s {{ ldap_server_uri }} + -D '{{ ldap_bind_dn }}' + -W '{{ ldap_bind_pw }}' + -n {{ schema_name }} + {% for at in attribute_defs %} + -a "{{ at }}" + {% endfor %} + {% for oc in objectclass_defs %} + -c "{{ oc }}" + {% endfor %} + register: ldapsm_result + changed_when: "'Created schema entry' in ldapsm_result.stdout" + check_mode: no + +- name: Show ldapsm output + debug: + var: ldapsm_result.stdout_lines \ No newline at end of file diff --git a/roles/docker-ldap/tasks/main.yml b/roles/docker-ldap/tasks/main.yml index 731662e7..d2bd01fd 100644 --- a/roles/docker-ldap/tasks/main.yml +++ b/roles/docker-ldap/tasks/main.yml @@ -49,36 +49,12 @@ - python-ldap state: present -- name: Create Nextcloud Schema - ldap_entry: - dn: "cn=nextcloud,cn=schema,cn=config" - objectClass: - - top - - olcSchemaConfig - attributes: - cn: nextcloud - olcAttributeTypes: - - >- - ( 1.3.6.1.4.1.99999.1 - NAME 'nextcloudQuota' - DESC 'Quota for Nextcloud' - EQUALITY integerMatch - ORDERING integerOrderingMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 - SINGLE-VALUE - ) - olcObjectClasses: - - >- - ( 1.3.6.1.4.1.99999.2 - NAME 'nextcloudUser' - DESC 'Auxiliary class for Nextcloud attributes' - AUXILIARY - MAY ( nextcloudQuota ) - ) - server_uri: "ldap://127.0.0.1:{{ ports.localhost.ldap.ldap }}" - bind_dn: "cn={{ applications.ldap.users.administrator.username }},cn=config" - bind_pw: "{{ applications.ldap.administrator_password }}" - state: present +- name: "Include Nextcloud Schema" + include_tasks: create_nextcloud_schema.yml + vars: + ldap_server_uri: "ldap://127.0.0.1:{{ ports.localhost.ldap.ldap }}" + ldap_bind_dn: "cn={{ applications.ldap.users.administrator.username }},cn=config" + ldap_bind_pw: "{{ applications.ldap.administrator_password }}" ############################################################################### # 1) Create the LDAP entry if it does not yet exist