AWX安装在 CentOS 机器上。一台单独的机器 ( gitlab.techraf
) 通过 HTTPS 使用由私有 CA 签名的证书为 GitLab 的 Web 界面提供服务。
剧情:
在“新”系统上,我发出命令:
/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /tmp/project
并获得(预期):
致命:无法访问“
https://gitlab.techraf/techraf/project.git/
”:无法识别对等方的证书颁发者。我在 AWX 机器上安装了根 CA 证书:
update-ca-trust force-enable curl https://certificate.source/certificates/techrafCA.pem > /etc/pki/ca-trust/source/anchors/techrafCA.pem update-ca-trust extract
我重试上面的方法
git clone
,这次得到了正确的响应:克隆到“/tmp/project”...
远程:计数对象:3,完成。
远程:总共 3 个(增量 0),重用 0 个(增量 0)
拆包对象:100% (3/3),完成。作为健全性检查,我
git clone
使用不同的用户帐户运行 - 在第 2 点安装根 CA 证书后没问题 - 根 CA 似乎是系统安装的。curl
也接受gitlab.techraf
的证书。(问题)我在 AWX 界面中定义了一个项目并尝试从 GitLab 同步它,但是我得到:
任务 [使用 git 更新项目]
******************************************* *****
致命:[本地主机]:失败!=> {“changed”:false,“cmd”:“/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /var/lib/awx/projects/_6__project
”,“failed”:true,“msg”:“fatal:无法访问'https://gitlab.techraf/techraf/project.git/
':无法识别对等的证书颁发者。”,“rc”:128, "stderr": "fatal: 无法访问 'https://gitlab.techraf/techraf/project.git/
': Peer 的证书颁发者无法识别。\n", "stderr_lines": ["fatal: 无法访问'https://gitlab.techraf/techraf/project.git/
': Peer 的证书颁发者无法识别。"], "stdout ": "正在克隆到 '/var/lib/awx/projects/_6__project'...\n", "stdout_lines": ["正在克隆到 '/var/lib/awx/projects/_6__project'..."]}作为一个健全的检查,我尝试了一个来自 GitHub 的项目,并且 AWX 正确地获取了它。
作为另一个健全性检查
ansible localhost -m command -a "/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /tmp/project2
,我运行了另一台机器,以确保非交互式 shell 会话工作相同。在任何一种情况下,证书都被接受。
git
(由 AWX/Ansible 调用)不使用已安装techrafCA.pem
证书的原因可能是什么?
下一步我可以采取什么措施来解决问题?
如果您在 awx_task 容器中执行相同操作,那么它可以工作!
通过我的 AWX 设置验证。
你需要两个文件:
在任务中添加到 docker-compose.yml:
重新创建任务容器
docker-compose up -d
您可以在 AWX 中完全禁用 GIT 证书验证。添加
AWX_TASK_ENV['GIT_SSL_NO_VERIFY'] = 'True'
到 awx_task 容器并重新启动它: