使用Ansible比较两个远程主机上的文件

时间:2017-09-19 10:01:22

标签: linux file ansible

我是Ansible的新手,我正试图围绕一些基本的剧本功能。我一直在寻找并且似乎无法找到一种方法来获取两个文件,这两个文件都在不同的服务器上并对它们的内容进行比较。我需要能够这样做,因为我计划使用Ansible / GIT自动执行一些基本文件管理。

目前我正在尝试,但它似乎无法正常工作 -

- name: get difference of two files
  command: diff test_user test_user
  hosts: me
  args:
    chdir: /home/vagrant/basicansible/tempcopy
  when: "diff.rc > 1"
  register: diff

- name: debug output
  debug: msg= "{{ diff.stdout }}"

提前致谢!

1 个答案:

答案 0 :(得分:0)

这是您似乎想要实现的一个工作示例。解释如下。

- hosts: me
  tasks:
  - name: get difference of two files
    command: >
      diff test_user1 test_user2
      chdir=/home/vagrant/basicansible/tempcopy
    register: difference
    failed_when: difference.rc > 1
    changed_when: difference.rc == 1

  - name: debug output
    debug: var=difference.stdout

问题中贴出的剧本存在一些问题:

  1. “主持人”是游戏的参数,而不是任务
  2. 问题中写的diff的参数是同一个文件
  3. “when”参数适用于已设置的变量,因为它处理任务是否首先运行,因此无法检查正在运行的任务的结果。相反,您正在寻找定义变更和失败的内容,请参阅上面的示例。