Ansible模块在两个文件中的区别

时间:2018-12-17 16:52:41

标签: ansible

我想查看文件中是否有任何更改,一个在本地,另一个在远程主机上。如果有任何差异,它应该在屏幕上可见 使用Ansible的最佳方式应该是什么

例如:

src:/tmp/abc.txt dest:主机名:/tmp/cde.txt

4 个答案:

答案 0 :(得分:0)

这听起来像是您可以使用debug模块执行的任务。使用diff获取两个文件的差异。注册输出并使用debug进行显示:

sqrt(2 / ncol(df))

答案 1 :(得分:0)

您还可以使用check_mode: yesdiff: 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_modediff 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)


  • 主机:本地主机 收集事实:是的 变成:是 成为方法:sudo 任务:
    • 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: 是 差异:是 注册:输出