You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible从控制节点复制文件到远程节点失败求助

问题:从Ansible控制节点复制文件夹到远程服务器失败

场景说明

在服务器A(同时作为Jenkins运行节点和Ansible控制节点)执行Ansible剧本,需求是将服务器A上user_a用户主目录下的SQL文件夹,复制到远程服务器B的user_a用户主目录指定路径:

  • 源路径(服务器A):~/code/data/sql/sql_data/{{ version_main }}
  • 目标路径(服务器B):~/deploy/{{ version_main }}/{{ date_time }}/files
  • 变量REMOTE_HOST、DATE_TIME由Jenkins传入
  • Jenkins用户无法直接访问源路径,但可通过sudo su - user_a切换到user_a用户访问

现有Ansible剧本

- hosts: "{{ lookup('env', 'REMOTE_HOST') }}"
  any_errors_fatal: true # 任意主机失败则所有主机任务终止
  become: true
  become_method: sudo
  become_user: root
  gather_facts: yes

  vars:
    date_time: "{{ lookup('env', 'DATE_TIME') }}"
    version_main: 10.7
    sql_dir: "~/code/data/sql/sql_data/{{ version_main }}"
    remote_files_directory: "~/deploy/{{ version_main }}/{{ date_time }}/files"

  tasks:  
    - name: "将SQL文件从{{ sql_dir }}复制到远程主机的{{ remote_files_directory }}"
      become: yes
      become_user: user_a
      ansible.builtin.copy:
        src: "{{ sql_dir }}"
        dest: "{{ remote_files_directory }}"
        remote_src: true

Ansible版本:ansible [core 2.13.7]

报错情况

  1. 设置remote_src: true时:
fatal: [server_B]: FAILED! => {"changed": false, "msg": "Source /home/user_a/code/data/sql/sql_data/10.7/ not found"}
  1. 设置remote_src: false时:
fatal: [server_B]: FAILED! => {"changed": false, "msg": "Could not find or access '~/code/data/sql/sql_data/10.7' on the Ansible Controller. If you are using a module and expect the file to exist on the remote, see the remote_src option"}

已尝试操作

  • 添加delegate_to: "{{ lookup('env', 'DEPLOY_DATAMONTH_HOST') }}",无效果
  • 尝试通过become: yes + become_user: user_a解决权限问题,未成功

疑问

请问还遗漏了什么配置或操作?

内容的提问来源于stack exchange,提问作者Philip Shangguan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:06:25