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]
报错情况
- 设置
remote_src: true时:
fatal: [server_B]: FAILED! => {"changed": false, "msg": "Source /home/user_a/code/data/sql/sql_data/10.7/ not found"}
- 设置
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
相关产品推荐
相关产品推荐

