Ansible synchronize模块拉取远程目录失败:无此文件或目录
解决方案
问题根源
从错误日志里的路径/home/mysourceuser//'/web/playbooks/automation/misc可以看出,rsync被传递了带多余单引号的路径——这是因为你在playbook的synchronize模块src参数里手动用单引号包裹了变量:
src: "'{{ item }}'"
这种写法会让Ansible把单引号当作路径的一部分传递给rsync,而远程主机上根本不存在带单引号的目录结构,直接导致"无此文件或目录"的报错。
修复步骤
修改playbook中的synchronize模块配置,去掉src参数里多余的单引号即可:
- name: Copying from "{{ inventory_hostname }}" to this ansible server. tags: validate synchronize: src: "{{ item }}" dest: "{{ playbook_dir }}/tmpfiles/{{ Latest_Build_Number }}/" mode: pull copy_links: yes with_items: - "{{ source_file_new.splitlines() }}"
验证操作
修改后重新执行playbook:
ansible-playbook /web/playbooks/automation/misc/filecopy/copyfiles.yml -e "source_file_new='$source_file_new'" -e "Latest_Build_Number='500'"
此时Ansible会正确传递原始路径给rsync,不会添加多余的引号,rsync就能正常识别远程主机上的/web/playbooks/automation/misc/filecopyprod目录并完成拉取操作。
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

