Python

如何在遠端伺服器中使用ansible將兩個文件合併為一個文件

  • September 17, 2020

我需要合併兩個沒有重複條目的文件。有什麼辦法可以通過ansible模組實現它。例如,我有兩個文件 /etc/hosts1 和 /etc/hosts2。我需要一個 /etc/hosts 文件,其中包含 /etc/hosts1 和 /etc/hosts2 中存在的所有條目而沒有重複條目。我怎樣才能做到這一點。一個例子將不勝感激

- name: Merge two files
 assemble:
   src: /etc/hosts1
   dest: /etc/hosts2

上面的 assemble 模組失敗

這行得通。它讀取所有文件的內容並將生成的行數組減少為唯一值。然後創建一個包含這些行的新文件。

- hosts: localhost
 gather_facts: no
 vars:
   hostsfiles:
     - /tmp/hosts1
     - /tmp/hosts2
 tasks:
 - name: read files
   command: awk 1 {{ hostsfiles | join(' ') }}
   register: hosts_contents
 - name: create hosts file
   copy:
     dest: /tmp/hosts
     content: "{{ hosts_contents.stdout_lines | unique |join('\n') }}"

我正在使用awk 1而不是cat在源文件的末尾添加可能缺少的換行符。

引用自:https://serverfault.com/questions/1034066