在有条件的情况下
changed_when: "'{{ my_var }}' not in users_list
我们如何强制 ansible 在搜索过程中匹配整个单词?
即假设:
my_var: admin
我希望任务仅在"admin"
in时更改users_list
而不是说"my_admin"
我试过了
changed_when: "'\b{{ my_var }}\b' not in users_list
。
似乎不起作用。
在有条件的情况下
changed_when: "'{{ my_var }}' not in users_list
我们如何强制 ansible 在搜索过程中匹配整个单词?
即假设:
my_var: admin
我希望任务仅在"admin"
in时更改users_list
而不是说"my_admin"
我试过了
changed_when: "'\b{{ my_var }}\b' not in users_list
。
似乎不起作用。
首先,when
Ansible 中的语句是原始的 Jinja2 语句。不要{{..}}
在里面使用。
其次,如果users_list
是一个列表,那么就可以正常工作——只有当列表中没有项目时my_var not in users_list
才会成立。admin
如果user_list
是字符串(如:),user1,user2,user3
您可以使用search
测试,例如:
---
- hosts: localhost
gather_facts: no
vars:
users_list: test1,1admin,test2,admin
my_var: admin
tasks:
- command: echo ok
changed_when: users_list is not search('(^|,)'+my_var+'(,|$)')