Linux
如何使用 Ansible 從遠端機器獲取多個文件到本地
我想使用 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
參數:指定同步的方向。在推送模式下,本地主機或委託是源;在拉模式下,上下文中的遠端主機是源。