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

标签 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 }}"

提前致谢!

最佳答案

这是您似乎要实现的目标的工作示例。解释如下。

- 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”参数适用于已设置的变量,因为它处理任务是否首先运行,因此无法检查正在运行的任务的结果。相反,您希望定义什么构成了更改和失败,请参见上面的示例。

关于linux - 使用 Ansible 比较两个远程主机上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46297528/

相关文章:

python - 将 Blogger XML 文件转换为 Wordpress WXR - 创建 Python 转换脚本

java - 从 java 文件更新文本文件

c - 反转二进制文件会向其添加位而不是反转

ansible - 在ansible中迭代两个列表

python - 由于 python 依赖于 Ubuntu 18.04,无法安装 ansible

regex - 如何使用 find + regex 匹配文件并仅返回包含所述文件的唯一目录?

linux - 如何立即将标准错误传递给参数

json - Ansible:从 json 输出中获取特定的属性值

linux - Bash 脚本中的变量,保持上次运行时的值

java - 在签名的 jnlp 小程序中创建新文件