从 vsts git 回购中提取时 Ansible 挂起

Ansible hangs when pulling from vsts git repo

嗨,我正在尝试从 vsts git 存储库 (ssh://********/_git/ClouderaAutomation) 克隆,但 ansible 似乎只是挂起当我尝试时。下面是正在使用的 git 模块的片段。

name: Clone git repo.
  git:
   repo: "{{ repoToClone }}"
   dest: "/home/vagrant/ClouderaAutomation"
   accept_hostkey: yes
   clone: yes
  become: yes

repoToClone 是 ssh://********/_git/ClouderaAutomation。当我直接在远程服务器上执行 'git clone' cmd 时,它会毫无问题地克隆存储库。但是,当我尝试通过 ansible 克隆时,它只是挂起而没有错误,这是 -vvv 日志的最后一行:

<192.168.33.30> SSH: EXEC sshpass -d15 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/9a3517bddd -tt 192.168.33.30 '/bin/sh -c '"'"'sudo -H -S -n -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-lugffujkolhidvafudbyhootlistpyyf; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1494346256.28-165153189526831/git.py; rm -rf "/home/vagrant/.ansible/tmp/ansible-tmp-1494346256.28-165153189526831/" > /dev/null 2>&1'"'"'"'"' "'"'"'"' && 睡眠 0'"'"''

我通过向我的 Ansible git 模块 -key_file 添加一个附加参数来设法解决我的问题。

Ansible Docs: Specify an optional private key file to use for the checkout.

完整模块示例:

name: Clone git repo.
  git:
   repo: "{{ repoToClone }}"
   dest: "/home/vagrant/ClouderaAutomation"
   accept_hostkey: yes
   key_file: /home/vagrant/.ssh/id_rsa
  become: yes

附加要求:

  • 确保您已生成一个 ssh 密钥对 (ssh-keygen),由于 OP 给出的答案 here,我生成了一个没有密码的密钥对。
  • 将 public 密钥添加到 vsts 服务器

希望这对遇到同样问题的其他人有所帮助。