Ansible:有条件地匹配整个单词
Ansible: match whole word in conditional
有条件的喜欢
changed_when: "'{{ my_var }}' not in users_list
我们如何强制 ansible 在搜索过程中匹配整个单词?
即假设:
my_var: admin
我希望任务仅在 "admin"
在 users_list
时更改,而不是说 "my_admin"
我试过了
changed_when: "'\b{{ my_var }}\b' not in users_list
.
好像不行。
首先,Ansible 中的 when
语句是原始的 Jinja2 语句。不要在其中使用 {{..}}
。
其次,如果 users_list
是一个 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+'(,|$)')
有条件的喜欢
changed_when: "'{{ my_var }}' not in users_list
我们如何强制 ansible 在搜索过程中匹配整个单词?
即假设:
my_var: admin
我希望任务仅在 "admin"
在 users_list
时更改,而不是说 "my_admin"
我试过了
changed_when: "'\b{{ my_var }}\b' not in users_list
.
好像不行。
首先,Ansible 中的 when
语句是原始的 Jinja2 语句。不要在其中使用 {{..}}
。
其次,如果 users_list
是一个 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+'(,|$)')