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+'(,|$)')