AWX установлен на машине CentOS. Отдельная машина (gitlab.techraf
) обслуживает веб-интерфейс GitLab через HTTPS с сертификатом, подписанным частным ЦС.
Сюжетная линия:
На «свежей» системе выдаю команду:
/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /tmp/project
и получите (ожидается):
фатальный: невозможно получить доступ '
https://gitlab.techraf/techraf/project.git/
': Издатель сертификата партнера не признан.
Я устанавливаю корневой сертификат ЦС на машину 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
Я повторяю вышеуказанное git clone
, на этот раз получим правильный ответ:
Клонирование в '/ tmp / project' ...
удаленный: Подсчет объектов: 3, готово.
удаленный: всего 3 (дельта 0), повторно используется 0 (дельта 0)
Распаковка предметов: 100% (3/3), готово.
В качестве проверки я побежал git clone
использование разных учетных записей пользователей - нет проблем после установки сертификата корневого ЦС в пункте 2 - корневой ЦС, похоже, установлен системно. curl
также принимает gitlab.techraf
сертификат.
(проблема) Я определяю проект в интерфейсе AWX и пытаюсь синхронизировать его из GitLab, но получаю:
ЗАДАЧА [обновить проект с помощью git]
***********************************************
фатальный: [localhost]: НЕ ВЫПОЛНЕНО! => {"изменено": false, "cmd": "/usr/bin/git clone --origin origin https://gitlab.techraf/techraf/project.git /var/lib/awx/projects/_6__project
"," не удалось ": правда," сообщение ":" фатальный: доступ невозможен "https://gitlab.techraf/techraf/project.git/
': Издатель сертификата партнера не распознан. "," Rc ": 128," stderr ":" fatal: недоступен доступ "https://gitlab.techraf/techraf/project.git/
': Издатель сертификата партнера не распознан. \ N "," stderr_lines ": [" fatal: недоступен доступ »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
, а также с другого компьютера, чтобы неинтерактивные сеансы оболочки работали одинаково. В любом случае сертификат был принят.
Что может быть причиной git
(вызывается AWX / Ansible) без использования установленного techrafCA.pem
сертификат?
Какой следующий шаг я могу предпринять для устранения проблемы?
Если вы сделаете то же самое внутри контейнера 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
Вам понадобится два файла:
[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
Вы можете полностью отключить проверку сертификата GIT в AWX. Добавить AWX_TASK_ENV['GIT_SSL_NO_VERIFY'] = 'True'
в контейнер awx_task и перезапустите его:
docker exec -ti awx_task vi /etc/tower/settings.py
docker restart awx_task