Ansible在另一个变量中搜索变量的内容
Ansible search content of variable in another variable
我正在尝试检查变量 B 的内容是否在变量 ssl_certs 中。
以下有效,但给我一个警告:
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}.
工作手册:
vars:
B: 'test-cert'
tasks:
- name: Collect bigip facts
bigip_device_facts:
provider: '{{ provider }}'
gather_subset: ssl-certs
register: ssl_certs
- name: debug SSL cert exists
debug:
msg: "cert-test already exists"
when: ssl_certs is search('{{B}}')
如果只在搜索中添加B的内容,就可以去掉警告。但是如何搜索一个变量在另一个变量中的内容来查找条件语句呢?
我已经尝试了以下方法,但由于不完全匹配所以不起作用
when: "B == ssl_certs"
谢谢
when 子句是一个没有双花括号的原始 Jinja2 表达式。
您可以试试这个代码片段。
变量:
乙:'test-cert'
tasks:
- name: Collect bigip facts
bigip_device_facts:
provider: '{{ provider }}'
gather_subset: ssl-certs
register: ssl_certs
- name: debug SSL cert exists
debug:
msg: "cert-test already exists"
when: ssl_certs in B
Ansibles 的解析器在运行时解析 when 条件,因为它是原始的 jinja2 模板,我们不需要提供 jinja2 模板的“{{}}”。
例如,假定以下行位于 ssl_certs
中存储的文本中
Subject: CN=Jane Doe, OU=Finance, O=test-cert, C=US
Jinja test in 是最简单的测试 B 的内容是否在存储在 ssl_certs[ 中的文本中的方法=30=] 还是不行。下面的任务
- debug:
msg: cert-test already exists
when: B in ssl_certs
vars:
B: test-cert
给予
msg: cert-test already exists
同样的结果给出了Ansible测试search
- debug:
msg: cert-test already exists
when: ssl_certs is search(B)
vars:
B: test-cert
此测试可用于搜索更多详细信息,例如
- debug:
msg: cert-test already exists
when: ssl_certs is search(regex)
vars:
B: test-cert
regex: 'Subject:(.*)O={{ B }}'
我正在尝试检查变量 B 的内容是否在变量 ssl_certs 中。 以下有效,但给我一个警告:
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}.
工作手册:
vars:
B: 'test-cert'
tasks:
- name: Collect bigip facts
bigip_device_facts:
provider: '{{ provider }}'
gather_subset: ssl-certs
register: ssl_certs
- name: debug SSL cert exists
debug:
msg: "cert-test already exists"
when: ssl_certs is search('{{B}}')
如果只在搜索中添加B的内容,就可以去掉警告。但是如何搜索一个变量在另一个变量中的内容来查找条件语句呢?
我已经尝试了以下方法,但由于不完全匹配所以不起作用
when: "B == ssl_certs"
谢谢
when 子句是一个没有双花括号的原始 Jinja2 表达式。 您可以试试这个代码片段。 变量: 乙:'test-cert'
tasks:
- name: Collect bigip facts
bigip_device_facts:
provider: '{{ provider }}'
gather_subset: ssl-certs
register: ssl_certs
- name: debug SSL cert exists
debug:
msg: "cert-test already exists"
when: ssl_certs in B
Ansibles 的解析器在运行时解析 when 条件,因为它是原始的 jinja2 模板,我们不需要提供 jinja2 模板的“{{}}”。
例如,假定以下行位于 ssl_certs
中存储的文本中 Subject: CN=Jane Doe, OU=Finance, O=test-cert, C=US
Jinja test in 是最简单的测试 B 的内容是否在存储在 ssl_certs[ 中的文本中的方法=30=] 还是不行。下面的任务
- debug:
msg: cert-test already exists
when: B in ssl_certs
vars:
B: test-cert
给予
msg: cert-test already exists
同样的结果给出了Ansible测试search
- debug:
msg: cert-test already exists
when: ssl_certs is search(B)
vars:
B: test-cert
此测试可用于搜索更多详细信息,例如
- debug:
msg: cert-test already exists
when: ssl_certs is search(regex)
vars:
B: test-cert
regex: 'Subject:(.*)O={{ B }}'