Ansible。仅适用于精确字符串的时间
启动下一个命令可以获取所有已安装的架构:Ansible。仅适用于精确字符串的时间,ansible,jinja2,Ansible,Jinja2,启动下一个命令可以获取所有已安装的架构: # fusiondirectory-insert-schema -l core cosine nis inetorgperson core-fd core-fd-conf ldapns template-fd openssh-lpk 如果缺少某个架构,我可以通过以下命令进行安装: # fusiondirectory-insert-schema -i mail-fd-conf.schema 因此,在Ansible中,使用shellmodule,我可以将
# fusiondirectory-insert-schema -l
core
cosine
nis
inetorgperson
core-fd
core-fd-conf
ldapns
template-fd
openssh-lpk
如果缺少某个架构,我可以通过以下命令进行安装:
# fusiondirectory-insert-schema -i mail-fd-conf.schema
因此,在Ansible中,使用shell
module,我可以将所有已安装的模式转换为变量:
- name: Get info which schemas are enabled
shell: fusiondirectory-insert-schema -l
register: fusiondirectory_schemas
然后分析此输出并安装跳过的架构:
- name: Apply mail schemas for Fusiondirectory
shell: fusiondirectory-insert-schema -i mail-fd-conf.schema
when: ('mail-fd-conf' not in fusiondirectory_schemas.stdout)
args:
chdir: "/etc/ldap/schema/fusiondirectory/"
假设我希望安装几个不同的模式,并且只使用一个fusiondirectory\u模式。stdout
输出用于when
。所以我的问题是当参数regex如^mail fd conf$
(但不要mail fd conf something
或test mail fd conf
)时如何在中使用,因为我只希望完全重叠。使用。
- name: set regex pattern
set_fact:
regex_pattern: "^.*mail-fd-conf.*$"
- name: Apply mail schemas for Fusiondirectory
shell: fusiondirectory-insert-schema -i mail-fd-conf.schema
when: fusiondirectory_schemas.stdout |match("{{ regex_pattern }}")
args:
chdir: "/etc/ldap/schema/fusiondirectory/
使用。
- name: set regex pattern
set_fact:
regex_pattern: "^.*mail-fd-conf.*$"
- name: Apply mail schemas for Fusiondirectory
shell: fusiondirectory-insert-schema -i mail-fd-conf.schema
when: fusiondirectory_schemas.stdout |match("{{ regex_pattern }}")
args:
chdir: "/etc/ldap/schema/fusiondirectory/
看起来棒极了。谢谢但不幸的是,当语句不应包含jinja2模板分隔符(如{{}}或{%})时,它会产生警告。找到:not(fusiondirectory_schemas.stdout|match(“{regex_pattern}”)
@ipeacocks我在我的环境中没有看到警告。请您将其更改为not(fusiondirectory_schemas.stdout|match(regex_pattern))
,删除{}
在我的环境中效果很好。看起来很棒。谢谢但不幸的是,当语句不应包含jinja2模板分隔符(如{{}}或{%})时,它会产生警告。找到:not(fusiondirectory_schemas.stdout|match(“{regex_pattern}”)@ipeacocks我在我的环境中没有看到警告。请您将其更改为not(fusiondirectory\u schemas.stdout | match(regex_pattern))
,删除{}
在我的环境中运行良好。