diff --git a/ansible/roles/openldap_server/defaults/main.yaml b/ansible/roles/openldap_server/defaults/main.yaml index 59d2265..7ad9f79 100644 --- a/ansible/roles/openldap_server/defaults/main.yaml +++ b/ansible/roles/openldap_server/defaults/main.yaml @@ -6,3 +6,6 @@ ldap_bind_dn: cn=binduser,{{ ldap_basedn }} ldap_cert_path: /etc/openldap/certs/ldap.crt ldap_key_path: /etc/openldap/certs/ldap.key + +ldap_directory_manager_dn: "cn=Manager,{{ ldap_basedn }}" +ldap_directory_manager_pw_hash: "{{ ldap_manager_pw_hash }}" diff --git a/ansible/roles/openldap_server/tasks/find_database.yaml b/ansible/roles/openldap_server/tasks/find_database.yaml new file mode 100644 index 0000000..7dfba5d --- /dev/null +++ b/ansible/roles/openldap_server/tasks/find_database.yaml @@ -0,0 +1,10 @@ +- name: Find main LDAP database DN + ansible.builtin.command: > + ldapsearch -Y EXTERNAL -H ldapi:/// \ + -b cn=config '(olcSuffix={{ ldap_basedn }})' dn + register: ldap_db_dn + changed_when: false + +- name: Set fact for main database DN + ansible.builtin.set_fact: + ldap_main_db_dn: "{{ ldap_db_dn.stdout_lines | select('match','^dn:') | first | regex_replace('^dn: ','') }}" diff --git a/ansible/roles/openldap_server/tasks/main.yaml b/ansible/roles/openldap_server/tasks/main.yaml index cd6dd94..59d3294 100644 --- a/ansible/roles/openldap_server/tasks/main.yaml +++ b/ansible/roles/openldap_server/tasks/main.yaml @@ -2,5 +2,7 @@ - import_tasks: disable_ldaps.yaml #- import_tasks: schemas.yaml - import_tasks: config.yaml +- import_tasks: find_database.yml +- import_tasks: manager.yml - import_tasks: tls.yaml - import_tasks: acls.yaml diff --git a/ansible/roles/openldap_server/tasks/manager.yaml b/ansible/roles/openldap_server/tasks/manager.yaml new file mode 100644 index 0000000..bf41252 --- /dev/null +++ b/ansible/roles/openldap_server/tasks/manager.yaml @@ -0,0 +1,11 @@ +- name: Set directory Manager DN and password + community.general.ldap_attrs: + dn: "{{ ldap_main_db_dn }}" + attributes: + olcRootDN: "{{ ldap_directory_manager_dn }}" + olcRootPW: "{{ ldap_directory_manager_pw_hash }}" + state: exact + args: + server_uri: ldapi:/// + bind_dn: cn=admin,cn=config + sasl_class: external