澳大利亚水产养殖协会安装在 CentOS 机器上。另一台机器(gitlab.techraf
)通过 HTTPS 为 GitLab 的 Web 界面提供服务,证书由私有 CA 签名。
故事情节:
在“新”系统上我发出以下命令:
/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 更新项目]
****************************************************
致命:[localhost]:失败! => {"changed": false, "cmd": "/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /var/lib/awx/projects/_6__project
", "failed": true, "msg": "致命:无法访问'https://gitlab.techraf/techraf/project.git/
':无法识别对等方的证书颁发者。", "rc": 128, "stderr": "致命:无法访问'https://gitlab.techraf/techraf/project.git/
':无法识别对等方的证书颁发者。\n", "stderr_lines": ["致命:无法访问'https://gitlab.techraf/techraf/project.git/
':无法识别对等方的证书颁发者。"], "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
?
我可以采取什么下一步措施来解决该问题?
答案1
如果您在 awx_task 容器内执行相同操作,那么它就可以工作!
已通过我的 AWX 设置进行验证。
update-ca-trust force-enable
curl https://certificate.source/certificates/techrafCA.pem > /etc/pki/ca-trust/source/anchors/techrafCA.pem
update-ca-trust extract
答案2
您需要两个文件:
- git配置
[http]
sslCAInfo = /etc/pki/ca-trust/source/anchors/yourca.pem
- 你的卡
在任务中添加docker-compose.yml:
- "./gitconfig:/etc/gitconfig"
- "./yourca.pem:/etc/pki/ca-trust/source/anchors/yourca.pem"
重新创建任务容器docker-compose up -d
答案3
您可以在 AWX 中完全禁用 GIT 证书验证。添加AWX_TASK_ENV['GIT_SSL_NO_VERIFY'] = 'True'
到 awx_task 容器并重新启动它:
docker exec -ti awx_task vi /etc/tower/settings.py
docker restart awx_task