Ansible:使用Ansible使用Diff命令

nis*_*ant 3 ansible

我正在尝试一个简单的任务,找出两个文件之间的差异,并将其存储在记事本中.我不能用命令和shell来做.请说明我错在哪里 -

---
- hosts: myserver
  tasks:
   - name: get the difference
     command: diff hosts.new hosts.mod
     register: diff
   - debug: var=diff.cmd
Run Code Online (Sandbox Code Playgroud)

错误 -

fatal: [zlp12037]: FAILED! => {"changed": true, "cmd": ["diff", "hosts.new", "hosts.mod"], "delta": "0:00:00.003102", "end": "2017-03-29 10:17:34.448063", "failed": true, "rc": 1, "start": "2017-03-29 10:17:34.444961", "stderr": "", "stdout":
Run Code Online (Sandbox Code Playgroud)

ipt*_*zer 6

我不太确定你的输入游戏的格式是什么样的.但以下应该是一个解决方案:

- name: "Get difference from two files"
  command: diff filea fileb
  args:
    chdir: "/home/user/"
  failed_when: "diff.rc > 1"
  register: diff
- name: debug output
  debug: msg="{{ diff.stdout }}"
Run Code Online (Sandbox Code Playgroud)

一些解释:

  • 如果使用diff命令失败,则返回码> 1.我们通过"failed_when"对此进行评估.
  • 要获取命令的输出,我们打印".stdout"元素.
  • 为了确保我们位于文件所在的文件夹中,我们使用"chdir".