我正在尝试将部分文件复制到远程计算机上。 我在Lubuntu上使用ansible 2.3.1.0,远程机器是CentOS 7.2。 这里唯一的问题是我需要将文件作为不同的用户复制到远程机器。 这是带有rsync命令的剧本
- name: Copy files to remote machine as user abc
shell: rsync -az ~/git/api_test/ --exclude='ansible/' abc@scspa.rtp.openenglab.abc.com:/home/abc/api/
但是,此命令会在以下时刻永远等待。
<scspa.rtp.openenglab.abc.com> ESTABLISH SSH CONNECTION FOR USER:root
<scspa.rtp.openenglab.abc.com> SSH: EXEC sshpass -d12 ssh -vvv -C
-o ControlMaster=auto -o ControlPersist=60s -o User=root -o
ConnectTimeout=10 -o ControlPath=/home/user/.ansible/cp/2df8c9c6b2 tt
scspa.rtp.openenglab.abc.com '/bin/sh -c
'"'"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1516965479.47-
49767854925756/command.py; rm -rf "/root/.ansible/tmp/ansible-tmp-
1516965479.47-49767854925756/" > /dev/null 2>&1 && sleep 0'"'"''
当我通过终端触发它时,shell命令工作正常,并且它立即运行。
我尝试使用ansible的同步模块,如下所示:
- name: Copy files to remote machine as user abc
synchronize:
src: ~/git/api_test/
dest: rsync://lnp@scspa.rtp.openenglab.abc.com:/home/abc/api/
mode: push
rsync_opts:
- "--exclude=ansible/"
我收到以下消息
"msg": "rsync: failed to connect to scspa.rtp.openenglab.abc.com (10.10.123.22): Connection refused (111)\nrsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]\n",
"rc": 10
我目前正在使用ansible的副本模块,但是如果已经复制了文件/检查需要花费很多时间,虽然这样做有效。
试图找出我缺少的东西
答案 0 :(得分:2)
根据您的问题,我了解您要将本地文件复制到远程计算机。
但是你的shell
任务是在远程主机上执行的,而不是你本地的。{
而剧本日志就是这样说的:
<scspa.rtp.openenglab.abc.com> ESTABLISH SSH CONNECTION FOR USER:root
您可能希望将任务委派给本地控制器:
- name: Copy files to remote machine as user abc
shell: rsync -az ~/git/api_test/ --exclude='ansible/' abc@scspa.rtp.openenglab.abc.com:/home/abc/api/
delegate_to: localhost