Vagrant 让rsync负责与流浪汉一起工作

Vagrant 让rsync负责与流浪汉一起工作,vagrant,rsync,ansible,Vagrant,Rsync,Ansible,我想使用测试脚本。在尝试对远程主机执行rsync之前,一切正常: - name: Install custom dev user settings local_action: command rsync -ave ssh roles/common/files/home/{{ item.name }} {{ ansible_ssh_user }}@{{ inventory_hostname }}:/#home/ with_items: dev_users when: "{

我想使用测试脚本。在尝试对远程主机执行rsync之前,一切正常:

- name: Install custom dev user settings
  local_action: command rsync -ave ssh roles/common/files/home/{{ item.name }} 
      {{ ansible_ssh_user }}@{{ inventory_hostname }}:/#home/
  with_items: dev_users
  when: "{{ item.custom }} == True"
  tags:
  - dev_custom
  - dev_users
  - users
然而,它在这一点上失败了-它似乎试图通过密码登录,但我不知道为什么,因为它应该通过SSH连接到Vagrant,对吗(我在下面省略了一些信息,因为它提到了密钥)

马克

如果您没有将ssh公钥部署到该框中(在
/home/vagrant/ssh/authorized_keys
中),那么请求输入密码是很正常的行为。使用“流浪者”和标准盒子应该是可行的

如果你先按一下键,以后事情就容易办了。你可以找到一个流浪汉导向的例子

似乎您已正确设置了
ansible\u ssh\u user
,但请确保您也使用
--ask pass--sudo
调用了playbook

作为旁注,该行:

when: "{{ item.custom }} == True"
可以改写为:

when: item.custom

我终于发现了如何解决这个问题。我知道它不是rsync,因为我在命令行测试了它:

rsync -ave ssh home/dataToSync root@10.0.0.10:/home/
这很有效。我上传了一个流浪者信箱的钥匙,我甚至不用登录。但是,从ansible调用rsync失败。我尝试按照Leucos的建议指定密码,但没有成功。我想了想,不知道问题是否出在Ansible试图在我本地的包厢上玩sudo。为了看看这是否是问题所在,我补充道

sudo: False

我的行动,它解决了问题

由于Vagrant以用户Vagrant的身份运行Ansible playbooks,因此尝试重新同步到根目录通常会失败。我发现的最可靠的解决方案是告诉Ansible将rsync与sudo结合使用,而不是在分配组或试图找到一些神奇的幂等chmod/chown解决方案上瞎搞

-同步:
src=/local/site/
dest=/var/www/site
rsync_path='sudo rsync'

请注意,Ansible对rsync进行了包装,使这些任务对作者来说更为简洁。

在Ansible 2.2.1.0中,这对我很有用:

- synchronize:
    mode: pull
    src: "/home/vagrant/dir1"
    dest: "/my_linux/dir1"
    recursive: yes
    delete: no
    times: yes
…使用此资源清册(要使用
ansible\u ssh\u private\u key\u文件
var):


希望它对您有所帮助。

嗨,Leucos,谢谢您提供有关它何时有用的提示。如果我添加了--ask pass--sudo,那么它会提示我输入密码('vagrant'),但它现在可以工作了-谢谢!你能再解释一下发生了什么/为什么这是必要的吗?我查了ansible.cfg,我有——sudo设置,但没有——询问密码?你必须告诉ansible询问sudo密码。在上面的输出中,您是否有机会在“[sudo via ansible,key=…]password:”行之后键入任何内容,或者它是否在未经请求的情况下展开所有这些行直到结束?是的,标记,但您似乎正在将密钥部署到~root/.ssh,而您作为“vagrant”连接。没关系,你帮了我很大的忙-这个Ansible教程看起来不错,所以我将在下一步继续学习。谢谢不客气,祝你玩得开心!这是一个地方行动!很抱歉错过了:facepalm::(
sudo: False
- synchronize:
    mode: pull
    src: "/home/vagrant/dir1"
    dest: "/my_linux/dir1"
    recursive: yes
    delete: no
    times: yes
[vagrant1]
192.168.77.4

[vagrant1:vars]
ansible_user=vagrant
ansible_ssh_private_key_file="/Users/Chilcano/.vagrant.d/insecure_private_key"