Ansible:在条件中匹配整个单词

时间:2017-04-10 16:07:13

标签: regex ansible ansible-2.x ansible-template

有条件的

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

似乎不起作用。

1 个答案:

答案 0 :(得分:2)

首先,Ansible中的when语句是原始的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+'(,|$)')