要使用Ansible部署ldap.conf,我必须从数组创建一个变量,以便在模板ldap.conf.j2中使用:
nss_base_group {{ ldap_base_group }}
变量数组:
---
ldap_groups: [ 'ORACLE', 'MY_SQL', 'POSTGR' ]
这必须产生一个参数,并使用大量静态字符进行增强:
ldap_base_group:"dc=foo,dc=com?sub?(&(|(memberof:1.2.654.123456.1.5.2468:=cn=ORACLE,ou=Groups,dc=foo,dc=com)(memberof:1.2.654.123456.1.5.2468:=cn=MY_SQL,ou=Groups,dc=foo,dc=com)(memberof:1.2.654.123456.1.5.2468:=cn=POSTGR,ou=Groups,dc=foo,dc=com))(!(userAccountControl:1.2.654.123456.1.5.654:=2)))"
这是相同的参数可读(由于换行符,空格等而无法使用):
ldap_base_group: "dc=foo,dc=com?sub?
(&
(|
(memberof:1.2.654.123456.1.5.2468:=cn=ORACLE,ou=Groups,dc=foo,dc=com)
(memberof:1.2.654.123456.1.5.2468:=cn=MY_SQL,ou=Groups,dc=foo,dc=com)
(memberof:1.2.654.123456.1.5.2468:=cn=POSTGR,ou=Groups,dc=foo,dc=com)
)
(!
(userAccountControl:1.2.654.123456.1.5.654:=2)
)
)"
有人在Ansible找到了一个很好的解决方案吗?也许还有另外一种方法可以做到这一点,我也很想知道替代方案。
答案 0 :(得分:2)
如果您对此进行模板设计,您应该可以按照以下方式执行操作:
ldap_base_group: "dc=foo,dc=com?sub?
(&
(|
{% for group in ldap_groups %}
(memberof:1.2.654.123456.1.5.2468:=cn={{ group }},ou=Groups,dc=foo,dc=com)
{% endfor %}
)
(!
(userAccountControl:1.2.654.123456.1.5.654:=2)
)
)"
如果您需要一行中的所有内容,那么将其展平应该可以正常工作。