我尝试使用ansible.builtin.search
将布尔结果赋给一个变量,并使用debug将其打印出来。
我尝试使用Ansible文档中的示例代码,但没有看到预期的结果。在调试输出中,我看到的不是布尔结果,而是整个搜索字符串。
下面是我的代码:
---
- name: test search
hosts: linux
remote_user: xxx
gather_facts: no
become: yes
vars:
url: "https://example.com/users/foo/resources/bar"
foundmatch: url is ansible.builtin.search("users")
tasks:
- debug:
msg: "{{foundmatch}}" # expect this to print the boolean value
- debug:
msg: "matched pattern 3"
when: url is ansible.builtin.search("users")
- debug:
msg: "matched pattern 4"
when: url is search("XXXusers")
“when:“中的比较逻辑按预期工作。但是调试程序正在将{{ foundmatch }}打印为:“msg”:“url is ansible.builtin.search(“users”)”而不是布尔值。
我错过了什么?我是不是阅读错了文档,搜索只能用于比较而不能用于赋值?
1条答案
按热度按时间cs7cruho1#
更新变量赋值以使用
"{{ expression }}"
语法。请注意,由于更改,搜索词“users”现在在单引号内。如果没有花括号,Ansible不知道将其作为Jinja2表达式进行计算,而是假设它是一个字符串。
它在
when
条件下按预期工作的原因是,when子句是一个没有双花括号的原始Jinja2表达式。(文件)