Ldap 通过Ansible debops.slapd设置slapd

Ldap 通过Ansible debops.slapd设置slapd,ldap,ansible,slapd,Ldap,Ansible,Slapd,我正在尝试使用Ansible和debops.slapd在Ubuntu 16机器上设置slapd服务,但无法获得正常运行的身份验证 我的剧本文件如下所示: --- - hosts: "{{hosts}}" become: true become_user: root roles: - role: debops.slapd slapd_domain: 'development.local' slapd_pki: false slapd_conf

我正在尝试使用Ansible和
debops.slapd在Ubuntu 16机器上设置
slapd
服务,但无法获得正常运行的身份验证

我的剧本文件如下所示:

---
- hosts: "{{hosts}}"
  become: true
  become_user: root
  roles:
    - role: debops.slapd
      slapd_domain: 'development.local'
      slapd_pki: false
      slapd_config_admin_password: 'passwords/ldap-admin.password'
      slapd_basedn_admin_password: 'passwords/ldap-admin.password'
      slapd_ldapscripts: true
      slapd_ldap_security_default: []
      slapd_anonymous_bind: true
passwords/ldap admin.password
文件:

yoh7eQue9Ki0aitee5uquaichuteo0ti

当我通过命令行
Ansible playbook install-devserver-ubuntu.yml-询问sudo pass--extra vars“hosts=ubuntu”
启动Ansible时,安装正确进行,并且
slapd
正确安装在目标机器上:

PLAY [ubuntu] ************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************
ok: [ubuntu]

TASK [debops.secret : Create secret directories on Ansible Controller] ***************************************

TASK [debops.slapd : Configure domain for OpenLDAP in debconf] ***********************************************
changed: [ubuntu] => (item=slapd/domain)
changed: [ubuntu] => (item=shared/organization)

TASK [debops.slapd : Configure database backend for OpenLDAP in debconf] *************************************
changed: [ubuntu]

TASK [debops.slapd : Install OpenLDAP packages] **************************************************************
changed: [ubuntu] => (item=[u'slapd', u'ldap-utils', u'python-ldap'])

TASK [debops.slapd : Install helper scripts] *****************************************************************
ok: [ubuntu]

TASK [debops.slapd : Copy custom LDAP schema files] **********************************************************
ok: [ubuntu]

TASK [debops.slapd : Load custom LDAP schema files] **********************************************************
changed: [ubuntu] => (item=/usr/local/etc/ldap/schema/ldapns.ldif)
changed: [ubuntu] => (item=/usr/local/etc/ldap/schema/openssh-lpk.ldif)

TASK [debops.slapd : Check if administrator password hash exists] ********************************************
ok: [ubuntu -> localhost]

TASK [debops.slapd : Read hash of config administrator password] *********************************************
ok: [ubuntu]

TASK [debops.slapd : Generate config administrator password] *************************************************
skipping: [ubuntu]

TASK [debops.slapd : Save hash of config administrator password] *********************************************
skipping: [ubuntu]

TASK [debops.slapd : Set config administrator password] ******************************************************
changed: [ubuntu] => (item=(censored due to no_log))
changed: [ubuntu] => (item=(censored due to no_log))

TASK [debops.slapd : Check if BaseDN administrator password hash exists] *************************************
ok: [ubuntu -> localhost]

TASK [debops.slapd : Read hash of BaseDN administrator password] *********************************************
ok: [ubuntu]

TASK [debops.slapd : Generate BaseDN administrator password] *************************************************
skipping: [ubuntu]

TASK [debops.slapd : Save hash of BaseDN administrator password] *********************************************
skipping: [ubuntu]

TASK [debops.slapd : Set BaseDN administrator] ***************************************************************
ok: [ubuntu] => (item=(censored due to no_log))
changed: [ubuntu] => (item=(censored due to no_log))

TASK [debops.slapd : Create path to LDAP password file in secrets] *******************************************
ok: [ubuntu]

TASK [debops.slapd : Save BaseDN administrator password for Ansible] *****************************************
changed: [ubuntu -> localhost]

TASK [debops.slapd : Add OpenLDAP system user to additional groups] ******************************************
skipping: [ubuntu]

TASK [debops.slapd : Check if TLS certificate is configured] *************************************************
ok: [ubuntu]

TASK [debops.slapd : Create random temporary directory for ldif file] ****************************************
skipping: [ubuntu]

TASK [debops.slapd : Prepare temporary ldif file] ************************************************************
skipping: [ubuntu]

TASK [debops.slapd : Restart slapd (first time only)] ********************************************************
skipping: [ubuntu]

TASK [debops.slapd : Configure TLS certificates (first time only)] *******************************************
skipping: [ubuntu]

TASK [debops.slapd : Configure TLS certificates] *************************************************************
skipping: [ubuntu] => (item={'key': u'olcTLSCipherSuite', 'value': u'SECURE256:-VERS-SSL3.0'})
skipping: [ubuntu] => (item={'key': u'olcTLSCertificateFile', 'value': u'/etc/pki/system/default.crt'})
skipping: [ubuntu] => (item={'key': u'olcTLSDHParamFile', 'value': u''})
skipping: [ubuntu] => (item={'key': u'olcTLSCertificateKeyFile', 'value': u'/etc/pki/system/default.key'})
skipping: [ubuntu] => (item={'key': u'olcTLSCACertificateFile', 'value': u'/etc/pki/system/CA.crt'})

TASK [debops.slapd : Allow anonymous bind] *******************************************************************
ok: [ubuntu] => (item={'key': u'olcDisallows', 'value': u'bind_anon'})
ok: [ubuntu] => (item={'key': u'olcRequires', 'value': u'authc'})

TASK [debops.slapd : Allow anonymous bind (frontend)] ********************************************************
ok: [ubuntu] => (item={'key': u'olcRequires', 'value': u'authc'})

TASK [debops.slapd : Deny anonymous bind, require authentication] ********************************************
skipping: [ubuntu] => (item={'key': u'olcDisallows', 'value': u'bind_anon'})
skipping: [ubuntu] => (item={'key': u'olcRequires', 'value': u'authc'})

TASK [debops.slapd : Deny anonymous bind, require authentication (frontend)] *********************************
skipping: [ubuntu] => (item={'key': u'olcRequires', 'value': u'authc'})

TASK [debops.slapd : Configure LDAP connection security] *****************************************************
ok: [ubuntu]

TASK [debops.slapd : Configure LDAP indices] *****************************************************************
changed: [ubuntu]

TASK [debops.slapd : Configure LDAP Access Control List] *****************************************************
changed: [ubuntu]

TASK [debops.slapd : Set slapd log level] ********************************************************************
ok: [ubuntu] => (item={'key': u'olcLogLevel', 'value': u'none'})

TASK [debops.slapd : Configure enabled services] *************************************************************
changed: [ubuntu]

TASK [debops.slapd : Install ldapscripts packages] ***********************************************************
ok: [ubuntu] => (item=[u'ldapscripts', u'ldap-utils', u'pwgen'])

TASK [debops.slapd : Configure ldapscripts] ******************************************************************
ok: [ubuntu]

TASK [debops.slapd : Configure ldapscripts password] *********************************************************
changed: [ubuntu]

TASK [debops.slapd : Create snapshot task in cron] ***********************************************************
ok: [ubuntu]

RUNNING HANDLER [debops.slapd : Restart slapd] ***************************************************************
changed: [ubuntu]

PLAY RECAP ***************************************************************************************************
ubuntu                     : ok=28   changed=12   unreachable=0    failed=0
到目前为止,一切正常,但我无法使用已设置为参数的管理员用户和管理员密码连接到LDAP目录。为了测试这一点,我在同一台机器上安装了
phpldapadmin
安装:

输入密码yoh7eQue9Ki0aitee5uquaichuteo0ti(与密码文件中的密码相同)将始终导致“无效凭据”

运行
slapcat
显示已创建管理员帐户本身:

dn: dc=development,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: development.local
dc: development
structuralObjectClass: organization
entryUUID: 2b111f1a-058f-1037-9bc1-01ccfd85f1f8
creatorsName: cn=admin,dc=development,dc=local
createTimestamp: 20170725141325Z
entryCSN: 20170725141325.508993Z#000000#000#000000
modifiersName: cn=admin,dc=development,dc=local
modifyTimestamp: 20170725141325Z

dn: cn=admin,dc=development,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9S1haVEUvbVQ1U0tBSEU1RXhVYVVhMDM4UGVoSS9ZNVA=
structuralObjectClass: organizationalRole
entryUUID: 2b114558-058f-1037-9bc2-01ccfd85f1f8
creatorsName: cn=admin,dc=development,dc=local
createTimestamp: 20170725141325Z
entryCSN: 20170725141325.510040Z#000000#000#000000
modifiersName: cn=admin,dc=development,dc=local
modifyTimestamp: 20170725141325Z

知道身份验证失败的原因吗?我是否使用了正确的机制将密码传递给
debops.slapd

当前
debops.slapd
角色可能未处于工作状态;它已经快一年没碰了

但是,DebOps角色通常提供一组正常的默认值。您是否尝试运行角色而不在自己的第一个角色中设置自定义值?角色已包括在内,您可以尝试该角色并查看服务配置是否正确


为了帮助调试,您可以使用ApacheDirectoryStudio作为低级LDAP客户端。
debops.slapd
角色使用由
debops.pki
角色维护的X.509证书;如果您使用它,您可能需要将根CA证书添加到ADS证书存储。

多亏了drybjed的建议,我认为我能够找到问题的原因:

...
slapd_config_admin_password: 'passwords/ldap-admin.password'
slapd_basedn_admin_password: 'passwords/ldap-admin.password'
...
这些文件实际上不是用来读取用于slapd的密码的源文件,而是用于写入slapd安装过程中生成的密码输出的机密目录中的目标文件

删除
/usr/local/etc/secret/
中的所有文件后(我正在使用通过自制安装的macOS上的Ansible),然后再次运行Ansible playbook,管理员的密码文件(cn=admin,dc=development,dc=local)在
/usr/local/etc/secret/ldap/credentials/ldap./cn=admin,dc=.password>处生成


使用此文件中存储的密码登录LDAP确实可以正常工作。

谢谢您的建议。剩下的问题是:如果我没有手动输入管理员密码,那么在哪里可以检索安装过程中自动生成的密码?另外:如果
debops.slapd
角色未处于工作状态:您能否建议在目标环境中设置LDAP服务器的任何替代方案?自动生成的密码存储在Ansible inventory目录旁边的
secret/
目录中。这是由
debops.secret
角色管理的,您可以查看其文档以了解详细信息。不幸的是,我不知道有什么好的替代
slapd
角色。如果需要,您可以查看debops.slapd中的哪些不起作用,并发布带有修复的PR。目前,该角色缺少一些重要功能,如LDAP数据库复制,这是为将来计划的。