Linux

如何使用 Ansible 從遠端機器獲取多個文件到本地

  • January 13, 2022

我想使用 Ansible 將文件從遠端目錄複製到本地目錄,但 fetch 模組只允許我複制一個文件。我有很多伺服器需要文件(每個伺服器的目錄相同),但我現在不知道如何使用 Ansible 執行此操作。

有任何想法嗎?

您可能需要註冊遠端內容並循環訪問它,這樣的事情應該可以工作:

- shell: (cd /remote; find . -maxdepth 1 -type f) | cut -d'/' -f2
 register: files_to_copy

- fetch: src=/remote/{{ item }} dest=/local/
 with_items: "{{ files_to_copy.stdout_lines }}"

/remote應該使用遠端伺服器上的目錄路徑和/local/主伺服器上的目錄更改哪裡

您應該使用同步模組來執行此操作。這使用了rsync的強大功能。它將複製任何深度的文件和目錄結構,防彈且高效 - 僅複製已更改的實際字節:

- name: Fetch stuff from the remote and save to local
 synchronize:  src={{ item }} dest=/tmp/ mode=pull
 with_items:
   - "folder/one"
   - "folder/two"

關鍵是mode參數:

指定同步的方向。在推送模式下,本地主機或委託是源;在拉模式下,上下文中的遠端主機是源。

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