当变量改变时执行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
要为许多用户执行此操作,请参阅 。
我有一个定义多个用户的变量文件:
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
要为许多用户执行此操作,请参阅