我是 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
问题中发布的剧本有几个问题:
- “主持人”是戏剧的论据,而不是任务的论据
- 问题中写的 diff 参数是同一个文件
- “when”参数适用于已设置的变量,因为它处理任务是否首先运行,因此无法检查正在运行的任务的结果。相反,您希望定义什么构成了更改和失败,请参见上面的示例。
关于linux - 使用 Ansible 比较两个远程主机上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46297528/