我有一个定义了许多用户的变量文件:
my_users:
admin:
- admin1
- admin2
user:
- bob
我有一个将这些用户添加到mongodb的任务。我不想每次都执行任务,但只有在用户改变的情况下才能执行。我尝试了以下方法:
- name: add users
command: "<add users>"
when: my_users|changed
但是,这不符合预期。如果我添加用户,则仍会跳过该任务。
只有在变量发生变化时才能执行任务?
答案 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。