Создать информационное дерево каталогов LDAP через роль Ansible - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь автоматизировать развертывание LDAP-сервера с использованием Ansible и Vagrant. Я нашел роль для развертывания сервера и роль для его настройки . Моя проблема начинается, когда я пытаюсь использовать команду ldapadd для создания информационного дерева каталога.

На сервере запущен базовый блок 'bento / centos-7.6' из блуждающего облака.

myспецифичные для хоста переменные:

#The domain prefix for ldap
openldap_server_domain_name: green.local

#This is the password for admin for openldap 
openldap_server_rootpw: letmein

#The self signed ssl parameters
openldap_server_country: BE
openldap_server_state: oostvlaanderen
openldap_server_location: gent
openldap_server_organization: IT

openldap_server_enable_ssl: false

#ldap-config configuration
default_user_password: letmein

openldap_create_organizationalunits:
  - Afdelingen

openldap_create_groups:
  - name: IT_Administratie
    gid: 1001
    group_ou: ou=Afdelingen
  - name: Verkoop
    gid: 1002
    group_ou: ou=Afdelingen
  - name: Administratie
    gid: 1003
    group_ou: ou=Afdelingen
  - name: Ontwikkeling
    gid: 1004
    group_ou: ou=Afdelingen
  - name: Directie
    gid: 1005
    group_ou: ou=Afdelingen

openldap_create_users:
  - name: john
    cn: John Deer
    sn: Deer
    password: john
    email: jd@live.com
    group_ou: ou=Afdelingen

openldap_add_uniquemember:
  - name: john
    member_dn: uid=john,ou=Afdelingen
    group_dn: cn=default-users,ou=Afdelingen

задачи, «включая создание информационного дерева каталогов LDAP (DIT)», которые не выполняются:

---
# tasks file for net2grid.openldap-server

- name: Copy LDAP DIT templates
  template:
    src: "dit.ldif.j2"
    dest: "/tmp/dit-{{ item }}.ldif"
    owner: root
    group: root
    mode: 0644
  with_items: "{{ openldap_create_organizationalunits }}"

- name: Copy LDAP groups templates
  template:
    src: "groups.ldif.j2"
    dest: "/tmp/groups-{{ item.name }}.ldif"
    owner: root
    group: root
    mode: 0644
  with_items: "{{ openldap_create_groups }}"

- name: Copy LDAP users templates
  template:
    src: "users.ldif.j2"
    dest: "/tmp/users-{{ item.name }}.ldif"
    owner: root
    group: root
    mode: 0644
  with_items: "{{ openldap_create_users }}"

- name: Copy LDAP uniquemember templates
  template:
    src: "uniquemember.ldif.j2"
    dest: "/tmp/uniquemember-{{ item.name }}.ldif"
    owner: root
    group: root
    mode: 0644
  with_items: "{{ openldap_add_uniquemember }}"

- name: Create LDAP directory information tree (DIT)
  shell: ldapadd -x -D "uid=admin,ou=Administrators,ou=TopologyManagement,o=netscaperoot" -w {{ dirsrv_admin_password }} -f /tmp/dit-{{ item }}.ldif && touch "{{ openldap_server_app_path }}/{{ item }}_dit_created"
  args:
     creates: "{{ openldap_server_app_path }}/dit_created"
  with_items: "{{ openldap_create_organizationalunits }}"

dit.ldif.j2

# Base DIT
dn: ou={{ item }},dc={{ dirsrv_fqdn.split('.')[1] }},dc={{ dirsrv_fqdn.split('.')[2] }}
ou: {{ item|capitalize }}
objectClass: top
objectClass: organizationalUnit

Ansible playbook останавливается со следующим сообщением об ошибке:

TASK [ldap-config : Copy LDAP groups templates] ********************************
ok: [alfa1] => (item={u'gid': 1001, u'group_ou': u'ou=Afdelingen', u'name': u'IT_Administratie'})
ok: [alfa1] => (item={u'gid': 1002, u'group_ou': u'ou=Afdelingen', u'name': u'Verkoop'})
ok: [alfa1] => (item={u'gid': 1003, u'group_ou': u'ou=Afdelingen', u'name': u'Administratie'})
ok: [alfa1] => (item={u'gid': 1004, u'group_ou': u'ou=Afdelingen', u'name': u'Ontwikkeling'})
ok: [alfa1] => (item={u'gid': 1005, u'group_ou': u'ou=Afdelingen', u'name': u'Directie'})

TASK [ldap-config : Copy LDAP users templates] *********************************
ok: [alfa1] => (item={u'cn': u'John Deer', u'name': u'john', u'password': u'deer', u'group_ou': u'ou=Afdelingen', u'email': u'jd@live.com', u'sn': u'Deer'})

TASK [ldap-config : Copy LDAP uniquemember templates] **************************
ok: [alfa1] => (item={u'member_dn': u'uid=john,ou=Afdelingen', u'name': u'john', u'group_dn': u'cn=default-users,ou=Afdelingen'})

TASK [ldap-config : Create LDAP directory information tree (DIT)] **************
failed: [alfa1] (item=Afdelingen) => {"ansible_loop_var": "item", "changed": true, "cmd": "ldapadd -x -D \"uid=admin,ou=Administrators,ou=TopologyManagement,o=netscaperoot\" -w letmein -f /tmp/dit-Afdelingen.ldif && touch \"/etc/openldap//Afdelingen_dit_created\"", "delta": "0:00:00.016942", "end": "2019-10-14 19:13:21.777353", "item": "Afdelingen", "msg": "non-zero return code", "rc": 49, "start": "2019-10-14 19:13:21.760411", "stderr": "ldap_bind: Invalid credentials (49)", "stderr_lines": ["ldap_bind: Invalid credentials (49)"], "stdout": "", "stdout_lines": []}

Я также попытался заменить

#tasks file
- name: Create LDAP directory information tree (DIT)
  shell: ldapadd -x -D "uid=admin,ou=Administrators,ou=TopologyManagement,o=netscaperoot" -w {{ dirsrv_admin_password }} -f /tmp/dit-{{ item }}.ldif && touch "{{ openldap_server_app_path }}/{{ item }}_dit_created"

на

#tasks file
- name: Create LDAP directory information tree (DIT)
  shell: ldapadd -x -D "cn=Manager,dc=green,dc=local" -w {{ dirsrv_admin_password }} -f /tmp/dit-{{ item }}.ldif && touch "{{ openldap_server_app_path }}/{{ item }}_dit_created"

, которыйоставляет меня с другой ошибкой

TASK [ldap-config : Create LDAP directory information tree (DIT)] **************
failed: [alfa1] (item=Afdelingen) => {"ansible_loop_var": "item", "changed": true, "cmd": "ldapadd -x -D \"cn=Manager,dc=green,dc=local\" -w letmein -f /tmp/dit-Afdelingen.ldif && touch \"/etc/openldap//Afdelingen_dit_created\"", "delta": "0:00:00.017490", "end": "2019-10-14 18:44:22.144153", "item": "Afdelingen", "msg": "non-zero return code", "rc": 53, "start": "2019-10-14 18:44:22.126663", "stderr": "ldap_add: Server is unwilling to perform (53)\n\tadditional info: no global superior knowledge", "stderr_lines": ["ldap_add: Server is unwilling to perform (53)", "\tadditional info: no global superior knowledge"], "stdout": "adding new entry \"ou=Afdelingen,dc=local,dc=dev\"", "stdout_lines": ["adding new entry \"ou=Afdelingen,dc=local,dc=dev\""]}

Я хотел бы знать, почему именно это не работает, я разрушал и настраивал машину весь день без каких-либо успехов. Любая помощь будет высоко ценится.

...