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