Ansible 如何预防';已更改';当';寄存器'-如何定义一个变量?

Ansible 如何预防';已更改';当';寄存器'-如何定义一个变量?,ansible,Ansible,我有一个寄存器任务要测试软件包的安装: tasks: - name: test for nginx command: dpkg -s nginx-common register: nginx_installed 每次运行都会报告为“更改”: 我不认为这是一种改变。。。它是上次运行时安装的,本次运行时仍在安装。是的,不是什么大问题,只是那些不整洁的强迫症类型的问题之一 那么我做错了吗?是否有某种方法可以使用寄存器,而不总是将其视为更改 [verbose]输出不整洁,但这是我找

我有一个
寄存器
任务要测试软件包的安装:

tasks:
  - name: test for nginx
    command: dpkg -s nginx-common
    register: nginx_installed
每次运行都会报告为“更改”:

我不认为这是一种改变。。。它是上次运行时安装的,本次运行时仍在安装。是的,不是什么大问题,只是那些不整洁的强迫症类型的问题之一

那么我做错了吗?是否有某种方法可以使用
寄存器
,而不总是将其视为更改

[verbose]输出不整洁,但这是我找到的获得正确返回代码的唯一方法

TASK:[针对nginx的测试]********************************************************
更改:[vm1]=>{“更改”: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”:“包:nginx common\n状态:安装正常”
...
\nHomepage:http://nginx.net"}

官方文档中对其进行了描述


导致状态更改的是
命令
模块,而不是
寄存器
参数

您可以设置为仅当某些内容发生更改时才为真的内容(同时查看)。如果您的任务没有改变任何东西,那么您可能还需要设置。(特别是如果其他步骤取决于该值)

这使得:

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

对于这种特定情况,您也可以考虑使用。
tasks:
  - name: test for nginx
    command: dpkg -s nginx-common
    register: nginx_installed
    changed_when: false
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