在Ansible中通过SSH进行GIT挂起,即使设置了ssh-agent转发也是如此

时间:2014-01-29 09:59:19

标签: git ssh timeout ansible ssh-agent

我已经设置了我能找到的每一个东西,但仍然从GitHub克隆一个repo挂起了配置过程。

我有:

  • known_hosts中的服务器
  • 的.ssh /配置

    Host github.com
      ForwardAgent yes
      StrictHostKeyChecking no
    
  • 复制私钥

  • 公钥位于authorized_keys
  • 该命令以vagrant用户
  • 运行
  • 该剧是:

    - name: Checkout from git
      git: repo=git@github.com:username/repositoryname.git dest=/srv/website
    

6 个答案:

答案 0 :(得分:60)

为了扩展到该问题的答案,该配置可以放在你的剧本旁边的ansible.cfg文件中。 e.g:

<强> ansible.cfg

[defaults]
transport = ssh

[ssh_connection]
ssh_args = -o ForwardAgent=yes

我说这样做比设置为env变量更好,因为将其置于conf文件中既更具声明性,也可以最大限度地减少您可能正在工作的其他人所需的步骤和一个项目一起去。

Conf docs: http://docs.ansible.com/intro_configuration.html#the-ansible-configuration-file

示例配置文件: https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg

答案 1 :(得分:14)

我想分享对我有用的答案:

https://groups.google.com/forum/#!msg/ansible-project/u6o-sWynMjo/69UwJfJPq7cJ - 来自Ansible Google Group

  

对于ansible,ssh-add首先在主机中加载ssh密钥。   然后使用“ssh”作为连接类型并启用转发。

     

如:

$ ssh-add  
$ export ANSIBLE_TRANSPORT="ssh"  
$ export  ANSIBLE_SSH_ARGS="-o ForwardAgent=yes"
     

请参阅ssh-add手册以运行代理。

ssh-args的Ansible文档为http://docs.ansible.com/intro_configuration.html#ssh-args

答案 2 :(得分:7)

这对我有用

- name: ensure known hosts
  shell: touch ~/.ssh/known_hosts
- name: remove github.com from known host
  shell: ssh-keygen -R github.com
  # >> instead of > to keep existing known_hosts file
- name: ensure github.com in known host
  shell: ssh-keyscan -H github.com >> ~/.ssh/known_hosts

答案 3 :(得分:1)

将以下参数添加到ansible.cfg:

[defaults]
sudo_flags=-HE

答案 4 :(得分:1)

在我的情况下,问题是存储库字符串。我有一个bitbucket私有存储库设置为:

的git @ TSRS ...

但它应该是:

<强> SSH :// git的@ TSRS ...

注意前缀“ssh”的微妙缺失。奇怪的是,如果我克隆一个没有“ssh”的github存储库,它工作正常!

答案 5 :(得分:0)

我有一个错误:

  

bitbucket.org有一个未知的主机密钥。将accept_hostkey设置为True或在运行git模块之前手动添加hostkey

我必须在我的git模块命令中添加accept_hostkey参数:

剧本:

tasks:
    - name: clone
      git: repo=git@bitbucket.org:robusta-code/xyz.git
           dest=/app
           accept_hostkey=yes

ansible.cfg

[ssh_connection]
ssh_args = -o ForwardAgent=yes