当变量改变时执行ansible任务

Execute ansible task when variable has changed

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

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

我的任务是将这些用户添加到 mongodb。我不想每次都执行任务,但只有在用户发生变化时才执行。我尝试了以下方法:

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

但是,这并没有按预期工作。如果我添加用户,任务仍然被跳过。

如何仅在变量发生变化时才执行任务?

通常你不会按照你尝试的方式去做。相反,如果用户不存在,ansible 必须创建用户。一个用户的方法是这样的:

- 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

要为许多用户执行此操作,请参阅