我有一个register
任务来测试软件包的安装:
tasks:
- name: test for nginx
command: dpkg -s nginx-common
register: nginx_installed
每次运行都会报告为“更改”:
TASK: [test for nginx] ********************************************************
changed: [vm1]
我不认为这是一个改变...它是在上次运行时安装的,并且仍在安装此次运行。是的,不是一个大的,只是那些不整洁的OCD类型问题之一。
我做错了吗?是否有某种方法可以使用register
而不将其视为一种变化?
[详细]输出是不整洁的,但是我找到了获得正确返回码的唯一方法。
TASK: [test for nginx] ********************************************************
changed: [vm1] => {"changed": true, "cmd": ["dpkg", "-s", "nginx-common"], "delta": "0:00:00.010231", "end": "2014-05-30 12:16:40.604405", "rc": 0, "start": "2014-05-30 12:16:40.594174", "stderr": "", "stdout": "Package: nginx-common\nStatus: install ok
...
\nHomepage: http://nginx.net"}
答案 0 :(得分:34)
官方文档here中对此进行了描述。
tasks:
- name: test for nginx
command: dpkg -s nginx-common
register: nginx_installed
changed_when: false
答案 1 :(得分:2)
是导致状态更改的command
模块,而不是register
参数。
您可以将Webhooks APIs设置为仅在发生更改时才为真(也请参见changed_when:
)。如果您的任务没有改变,则可能还需要设置failed_when
。 (尤其是其他步骤是否取决于该值)
这给出了:
tasks:
- name: test for nginx
command: dpkg -s nginx-common
register: nginx_installed
changed_when: False
failed_when: False # dpkg -s returns 1 when packages is not found
check_mode: yes # this can safely run in check_mode