Ansible:使用数组创建变量
Ansible: Use array to create a variable
要使用 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 中找到了一个很好的解决方案来做到这一点?也许还有其他方法可以做到这一点,我也很想知道其他方法。
如果您对此进行模板化,您应该能够按照以下方式做一些事情:
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)
)
)"
如果您需要将所有内容都放在一行中,那么只需将其展平即可。
要使用 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 中找到了一个很好的解决方案来做到这一点?也许还有其他方法可以做到这一点,我也很想知道其他方法。
如果您对此进行模板化,您应该能够按照以下方式做一些事情:
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)
)
)"
如果您需要将所有内容都放在一行中,那么只需将其展平即可。