Я пытаюсь автоматизировать развертывание 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\""]}
Я хотел бы знать, почему именно это не работает, я разрушал и настраивал машину весь день без каких-либо успехов. Любая помощь будет высоко ценится.