Vagrant,Ansible和SSH转发

时间:2015-01-09 22:24:37

标签: vagrant ansible

我正在尝试使用Vagrant和Ansible来创建开发人员VM环境。我能够连接好并安装包。我的问题似乎与ssh,git和keyfiles有关。不幸的是,我的设置相当复杂,我没有能力改变它。 git存储库托管在我必须通过带有密钥文件的堡垒主机连接的机器上。

我的本​​地ssh配置文件具有使其工作的所有必要代理命令。我有SSH转发我的密钥,因为我可以手动登录VM并使用git。通过Ansible它似乎不知道应该通过ssh配置文件设置的主机。

我没有将git克隆作为sudo运行,我使用的是accept_hostkey。它似乎根本不知道存储库主机。

我还尝试使用以下命令添加ansible.cfg:

ssh_args = -o ControlPersist=15m -F ssh.config -q

ssh.config文件与我的〜/ .ssh / config相同,在手动执行git克隆时恰好起作用。我也是手动做流浪者用户,我在我的剧本中将remote_user设置为vagrant。

我只是觉得这应该如何运作。

3 个答案:

答案 0 :(得分:1)

如果我理解正确,你可以手动git clone进入你的流浪汉机器吗?

如果是,那么你可以这样做,因为你已经告诉我们这两台机器有完全相同的〜/ .ssh / config文件,那么你可以这样做,就像我在git clone中做的那样,我收到了错误:

- name: Pull sources from the repository.
  git: repo='git@bitbucket.org:test/test.git' version=master dest=/var/www     accept_hostkey=True force=yes recursive=no key_file=~/.ssh/id_rsa

有时,明确定义了key_file,accept_hostkey = True,force = yes解决问题。

另一方面,如果你想明确定义总是使用ssh连接而不是paramiko,那么你可以设置你的ansible.cfg文件,该文件位于/etc/ansible/ansible.cfg

[defaults]
transport=ssh

我在某处读过另一种技术,你也可以试着教你Ansible代表你和Git服务器交谈(这个改动再次在/etc/ansible/ansible.cfg中)

[ssh_connection]
ssh_args = -o ForwardAgent=yes

希望这会对你有所帮助。感谢

答案 1 :(得分:0)

我对Ansible不太熟悉,但是从文档来看,Ansible支持2个ssh transports:OpenSSH,Paramiko(Python的SSH)。 除非您手动选择使用哪一个,it might choose Paramiko而不是OpenSSH。

这可以解释您遇到的麻烦,因为ssh_args是特定于OpenSSH的设置。

答案 2 :(得分:0)

所以问题结果是我实际上是以root身份运行我的一个git克隆。

要在这种情况下正确转发SSH密钥,您必须编辑/ etc / sudoers(使用visudo)并更新env_keep以便保留SSH_AUTH_SOCK。