使用ansible克隆带有子模块的git项目

使用ansible克隆带有子模块的git项目,git,ansible,Git,Ansible,虽然看起来很简单,但我的ansible设置在尝试克隆具有子模块的git repo时挂起。“父”repo已克隆,没有问题,但ansible任务无法克隆子模块,事实上在此之后挂起,几乎就好像它预期会有一些响应 以下是我克隆回购协议的任务: - name: Clone/Pull the {{ certificate_authority.repo.name }} repository become: yes git: repo="{{ ca.repo.url }}" force=yes acce

虽然看起来很简单,但我的ansible设置在尝试克隆具有子模块的git repo时挂起。“父”repo已克隆,没有问题,但ansible任务无法克隆子模块,事实上在此之后挂起,几乎就好像它预期会有一些响应

以下是我克隆回购协议的任务:

- name: Clone/Pull the {{ certificate_authority.repo.name }} repository
  become: yes
  git: repo="{{ ca.repo.url }}" force=yes accept_hostkey=yes clone=yes version="{{ git_branch | default(git_tag) }}"
       dest="{{ ca.repo.dest }}" key_file={{ ca.repo.key.location }}/{{ ca.repo.key.name }} recursive=yes track_submodules=yes

你知道为什么ansible会挂起克隆这份回购协议吗

对于遇到此问题的任何其他人,解决方案是确保
.gitmodules
文件中的子模块使用
git
协议,即
ssh://git@..

使用
-vvv
运行您的playbook是否会产生任何有用的细节?如果在挂起时运行
ps
,那么它正在运行的
git
命令行是什么?您能够从同一系统上的命令行成功克隆它吗?使用
-vvv
运行包括以下有趣的片段
…查找/var/folders/z9/v1czs6dd7vb5jtq\u 0fr8f5y80000gp/T/tmp\r\ndebug3:发送消息fd 8 T:17 I:2\r\ndebug3:接收到的stat回复T:101 I:2\r\ndebug1:无法远程统计文件:没有这样的文件或目录\r\n错误3:已发送消息SSH2\U FXP\U OPEN I:3。。。SSH2\u FXP\u状态0\r\n错误3:mux\u客户端\u读取\u数据包:读取头失败:管道断开\r\n错误2:接收到来自主机0的退出状态\r\n')
。运行
ps aux | grep git
显示正在运行以下命令`运行
ps aux | grep git
显示正在运行的命令是
/usr/bin/python/tmp/ansible_6X_csE/ansible_module_git.py
/usr/bin/git子模块更新--init--递归--force
/bin/sh/usr/lib/git core/git submodule update--init--recursive--force
(对于三个子模块中的每一个子模块),
git submodule--helper update clone
/usr/lib/git core/git submodule--helper clone--path lib/first subproject--name lib/first subproject--urlhttps://reayn@org/reayn/first subproject.git
。因此,ansible似乎正在尝试克隆repos+100。我不明白为什么ansible git模块在手动执行git拉取操作时会提示我输入密码。很明显,当我手动拉动时,我没有拉动子模块,所以当它手动工作时,它是一个假阳性。