只是想了解您可以使用哪种方法将目录从5-10台远程主机复制到目标(例如跳转服务器)?
我一直在努力的一个是:
---
- hosts: all
gather_facts: true
vars:
src_path: "/source_path/"
dest_path: "/destination_path/{{ inventory_hostname }}/"
tasks:
- name: Copy a location from REMOTE server to the LOCAL jump box
tags: sync-pull
synchronize:
# The synchronize module forces–delay-updates to avoid leaving a destination in a broken in-between state if the underlying rsync process encounters an error.
src: "{{ src_path }}"
dest: "{{ dest_path }}"
mode: pull # In pull mode the remote host in context is the source.
delete: yes # Delete files in dest that don't exist (after transfer, not before) in the src path. This option requires recursive=yes.
recursive: yes
compress: yes # Default yes. Compress file data during the transfer
times: yes # Preserve modification times
rsync_timeout: 15 # Specify a --timeout for the rsync command in seconds.
rsync_opts:
- "--exclude=.git"
- "--exclude=*.log"
- "--exclude=*.log.gz"
仍有许多事情要弄清楚。其中一些是:
1)如何确保根据主机选择路径。即,主机1具有3个source_path。我不确定该怎么做!
2)如果source_path没有必需的权限,则脚本失败并显示错误:
send_files无法打开\“ source_path / iamlog.log \”:权限被拒绝(13)\ 无法弄清楚在这里可以做什么!
答案 0 :(得分:0)
首先要检查的是您要复制的文件的文件权限,由于运行ansible-playbook的用户无权读取该文件,因此文件似乎没有被复制。
检查
ls -lhtra iamlog.log
最坏的情况暂时将所有人的全部权限授予,以查看是否可行:
chmod 777 iamlog.log
如果这样可以工作,则可能需要将执行ansible-playbook的用户添加到服务器上的本地组中,以授予访问权限或以该文件的用户所有者身份运行。 HTH。