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))
,删除
{}
在我的环境中运行良好。