rsync通过ansible命令/ shell在从主机复制到远程计算机时作为不同的ssh用户永远等待

时间:2018-01-26 11:37:30

标签: ansible

我正在尝试将部分文件复制到远程计算机上。 我在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的副本模块,但是如果已经复制了文件/检查需要花费很多时间,虽然这样做有效。

试图找出我缺少的东西

1 个答案:

答案 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