2014-01-29 99 views
31

我已經設置了everyhing我可以找到,但仍克隆從GitHub repo掛起配置過程。Git通過SSH在Ansible掛起,事件雖然ssh代理轉發設置

我有:在known_hosts中

  • 服務器
  • 的.ssh/config中

    Host github.com 
        ForwardAgent yes 
        StrictHostKeyChecking no 
    
  • 複製私鑰

  • 公共密鑰是通過在authorized_keys
  • 命令運行作爲vagrant用戶
  • 的打法是:

    - name: Checkout from git 
        git: [email protected]:username/repositoryname.git dest=/srv/website 
    
+6

請確保您沒有使用'sudo'運行此任務,因爲它會中斷代理轉發。 –

+0

@techtonik即使轉發設置爲root用戶? – cvsguimaraes

+0

@cvsguimaraes轉發是從您的'ssh-agent'端口到遠程SSH端口的連鎖,並且通過'sudo'打破這個鏈條,除非您解決這個問題。請參閱http://stackoverflow.com/a/24134109/239247 –

回答

14

,我想分享的是爲我工作的回答:

https://groups.google.com/forum/#!msg/ansible-project/u6o-sWynMjo/69UwJfJPq7cJ - 從Ansible谷歌

集團

對於ansible, ssh-add首先加載主機中的ssh密鑰。 然後使用「ssh」作爲啓用轉發的連接類型。

如:用於

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

見手冊SSH-添加運行的代理。

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

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 
+14

不需要,因爲git ansible模塊有一個標誌accept_hostkey來確保它。只需打開它。 – kaji

+1

Ansible用於維護/ etc/ssh/ssh_known_hosts文件的模塊https://github.com/bfmartin/ansible-sshknownhosts – jitter

60

只是對tillda的答案擴大,這個配置可以放置在一個ansible.cfg文件旁邊的劇本。例如:

ansible.cfg

[defaults] 
transport = ssh 

[ssh_connection] 
ssh_args = -o ForwardAgent=yes 

我會說這是好做,除設置爲環境變量,如將其放置在conf文件既更聲明,也將減少您可能正在與一個項目合作的其他人所需的步驟。

的conf文件: http://docs.ansible.com/intro_configuration.html#the-ansible-configuration-file

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

+0

我同意。謝謝你。 –

+0

這爲我工作。謝謝! – bcherny

+1

對我不起作用仍然卡住 – holms

0

我有一個錯誤:

bitbucket.org具有未知hostkey。設置accept_hostkey爲True或hostkey運行git的模塊

我只好一個accept_hostkey參數添加到我的git模塊命令之前手動添加:

劇本:

tasks: 
    - name: clone 
     git: [email protected]:robusta-code/xyz.git 
      dest=/app 
      accept_hostkey=yes 

ansible。 cfg

[ssh_connection] 
ssh_args = -o ForwardAgent=yes 
1

將以下參數添加到ansible.cfg中:

[defaults] 
sudo_flags=-HE 
1

在我的情況下,問題是存儲庫字符串。我有一個私人到位桶倉庫設置爲:

混帳@ TSRS ...

,但它應該是:

SSH:// @混帳TSRS ...

注意前綴「ssh」的細微缺失。奇怪的部分是,如果我克隆一個沒有「ssh」的github倉庫,它工作正常!