Ansible内置git模块执行无限挂起,command模块git clone正常
Ansible Git模块无限挂起问题的解决方案
别在repo参数里直接嵌入凭证
Ansible的git模块对URL中凭证的处理逻辑和原生git命令存在差异,手动把编码后的密码拼进repo URL,容易触发模块内部的凭证交互流程,导致任务卡住。改用单独的username和password参数传递凭证更稳妥:- name: pull via git git: repo: "https://{{ gitUrl }}" dest: "{{ gitDir }}" clone: true username: "{{ gitUser }}" password: "{{ gitPass }}"模块会自动处理凭证的编码与传递,既省去手动URL编码的步骤,也能避免兼容性问题。
临时禁用git凭证助手
如果目标主机的git配置了凭证助手,模块执行时可能触发助手的交互提示,导致任务挂起。可以在任务中通过git_config参数临时禁用该功能:- name: pull via git git: repo: "https://{{ gitUrl }}" dest: "{{ gitDir }}" clone: true username: "{{ gitUser }}" password: "{{ gitPass }}" git_config: - name: credential.helper value: ""这样能强制本次git操作不调用凭证助手,避免弹出密码提示框。
检查版本兼容性
部分旧版本的Ansible git模块与目标主机上的git版本存在兼容性问题,尤其是HTTPS凭证的处理逻辑。可以先通过git --version查看目标主机的git版本,若版本过旧,尝试升级git或把Ansible更新到稳定新版本。
内容的提问来源于stack exchange,提问作者A.Nelson
相关产品推荐
相关产品推荐

