变量发生变化时执行ansible任务

时间:2016-11-07 13:30:30

标签: ansible ansible-playbook

我有一个定义了许多用户的变量文件:

my_users:
  admin:
    - admin1
    - admin2
  user:
    - bob

我有一个将这些用户添加到mongodb的任务。我不想每次都执行任务,但只有在用户改变的情况下才能执行。我尝试了以下方法:

- name: add users
  command: "<add users>"
  when: my_users|changed

但是,这不符合预期。如果我添加用户,则仍会跳过该任务。

只有在变量发生变化时才能执行任务?

1 个答案:

答案 0 :(得分:3)

通常你不会按照你的方式去做。相反,如果用户尚不存在,则必须创建用户。与一个用户一起使用的方法如下:

- name: Check if user george exists
  command: "<return a status code of zero if user george exists>"
  register: check_george_exists
  ignore_errors: yes
  always_run: yes
  changed_when: False

- name: Create user george
  command: "<create user george>"
  when: check_george_exists.rc == 0

要为许多用户执行此操作,请参阅Register variables in with_items loop in Ansible playbook