2017-07-25 34 views
0

我试图在使用Ansible和debops.slapd的Ubuntu 16计算机上设置slapd服务,但无法启动正在运行的身份验证。通过Ansible设置slapd debops.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 

Directory structure

当我通过命令行启动Ansible ansible-playbook install-devserver-ubuntu.yml --ask-sudo-pass --extra-vars "hosts=ubuntu"继续进行安装正确和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 

到目前为止,这么好,但我无法使用已设置为参数的admin用户和管理员密码连接到LDAP目录。为了验证这一点,我已经安装了一个phpldapadmin安装在同一台机器上:

Screenshot of 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

回答

1

debops.slapd角色此刻可能不处于工作状态;它近一年没有被触及。

但是,DebOps角色通常会提供一组理智的默认值。您是否尝试在未自行设置自定义值的情况下运行该角色?该角色包含an example playbook,您可以尝试使用该服务并查看该服务是否已正确配置。

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

+0

感谢您的建议。现在仍然存在的问题是:如果我没有手动输入管理员密码,那么我可以在哪里检索在安装过程中自动生成的密码? Plus:如果'debops.slapd'角色不处于工作状态:您能否在建立目标环境中的LDAP服务器时提出任何其他建议? – perdian

+0

自动生成的密码存储在您的Ansible库存目录旁边的'secret /'目录中。这是由'debops.secret'角色管理的,你可以查看它的文档中的细节。 不幸的是,我不知道任何好的替代'slapd'角色。你可以看看'debops.slapd'中有什么不起作用,并且在需要的时候发布带有修补程序的PR。目前,角色缺乏一些重要的功能,如LDAP数据库复制,这是计划在未来。 – drybjed

0

感谢来自drybjed我想我是能够找到问题的原因建议:

... 
slapd_config_admin_password: 'passwords/ldap-admin.password' 
slapd_basedn_admin_password: 'passwords/ldap-admin.password' 
... 

这些其实都是源从中读取密码文件中使用对于slapd但目标文件在秘密库存目录中,其中写入在slapd的安装过程中生成的密码的输出。

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

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