我想查看文件中是否有任何更改,一个在本地,另一个在远程主机上。如果有任何差异,它应该在屏幕上可见 使用Ansible的最佳方式应该是什么
例如:
src:/tmp/abc.txt dest:主机名:/tmp/cde.txt
答案 0 :(得分:0)
答案 1 :(得分:0)
您还可以使用check_mode: yes
和diff: yes
任务选项来显示差异:
---
- hosts: localhost
gather_facts: no
tasks:
- name: "Only show diff between test1.txt & test2.txt"
copy:
src: /tmp/test2.txt
dest: /tmp/test1.txt
check_mode: yes
diff: yes
示例:
# cat /tmp/test1.txt
test1
# cat /tmp/test2.txt
test1
test2
# ansible-playbook diff.yaml
PLAY [localhost] ***********************************************************************************************************************************
TASK [Only show diff between test1.txt & test2.txt] ************************************************************************************************
--- before: /tmp/test1.txt
+++ after: /tmp/test2.txt
@@ -1 +1,2 @@
test1
+test2
changed: [localhost]
PLAY RECAP *****************************************************************************************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0
有关check_mode
和diff
here的更多信息。
答案 2 :(得分:0)
在命令行中,
ansible <host-pattern> -m copy -CD -a "src=<your local file> dest=<remote file or location>"
-m copy
选项使Ansible调用 copy 模块
-C
选项使Ansible 检查是否会发生更改,而不是执行复制
-D
选项使Ansible报告如果要进行复制将发生的更改
输出与UNIX diff
命令产生的输出相似,只是它报告了本地文件和远程副本之间的差异。
答案 3 :(得分:0)
name:获取可靠的日期/时间事实 设置: 过滤器:“ansible_date_time” gather_subset: "!all"
name:将 DTG 存储为事实 设置事实: DTG:“{{ ansible_date_time.date }}”
name:USCORE_Switch 的变化 复制: src: /home/thilan_widearea_cloud/network-programmability/curentconfig/backups/{{hostvars.localhost.DTG}}/USNYCL3SW-{{hostvars.localhost.DTG}}-config.txt 目标:/home/thilan_widearea_cloud/network-programmability/curentconfig/USBaseconfig.txt check_mode: 是 差异:是 注册:输出