Ansible не может выполнить git clone с корпоративного git сервера.

Вопрос или проблема

Привет, у меня есть корпоративный git-сервер, на котором я создал приватный test-repo и добавил ssh-ключ в форму развертывания ssh-ключа. Я определил роль git в своих общих ролях с нижеприведенным yml определением.

---

- name: приватный ключ github enterprise
  copy: >
    src=id_rsa_ghe
    dest=/etc/id_rsa_ghe
    owner=root
    group=root
    mode=0600

- name: клонировать проект test-repo
  git:
    repo: [email protected]:code/test-repo.git
    dest: /etc/test-repo
    accept_hostkey: true
    key_file: /etc/id_rsa_ghe

В roles/common/git я определил папку files, куда поместил свой приватный ключ для git clone, однако я все равно получаю ошибку, как ниже:

fatal: [localhost]: FAILED! => {“changed”: false, “cmd”: [“/usr/bin/git”, “fetch”, “–tags”, “origin”], “failed”: true, “msg”: “Не удалось загрузить объекты и ссылки удаленного репозитория: ОШИБКА: Репозиторий не найден.\nfatal: Не удалось прочитать удаленный репозиторий.\n\nПожалуйста, убедитесь, что у вас есть правильные права доступа\nи что репозиторий существует.\n”}

Ниже мои системные данные. Я запускаю этот плейбук локально на одном из моих серверов.

$ lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание:    Ubuntu 14.04.5 LTS
Версия:    14.04
Кодовое имя:   trusty

$ansible --version
ansible 2.2.1.0
  конфигурационный файл = /etc/ansible/ansible.cfg
  настроенный путь поиска модулей = По умолчанию без переопределений

Ниже фактическая ошибка, которую я получаю: репозиторий не найден.

Использование файлов модуля
/usr/lib/python2.7/dist-packages/ansible/modules/core/source_control/git.py
<127.0.0.1> УСТАНОВЛЕНИЕ ЛОКАЛЬНОГО СОЕДИНЕНИЯ ДЛЯ ПОЛЬЗОВАТЕЛЯ: root <127.0.0.1> EXEC
/bin/sh -c ‘( umask 77 && mkdir -p “echo
~/.ansible/tmp/ansible-tmp-1487398723.48-100968102221507
” && echo
ansible-tmp-1487398723.48-100968102221507=”echo
~/.ansible/tmp/ansible-tmp-1487398723.48-100968102221507
” ) && sleep
0′ <127.0.0.1> PUT /tmp/tmp2Bijvu TO
/home/ubuntu/.ansible/tmp/ansible-tmp-1487398723.48-100968102221507/git.py
<127.0.0.1> EXEC /bin/sh -c ‘chmod u+x
/home/ubuntu/.ansible/tmp/ansible-tmp-1487398723.48-100968102221507/
/home/ubuntu/.ansible/tmp/ansible-tmp-1487398723.48-100968102221507/git.py
&& sleep 0’ <127.0.0.1> EXEC /bin/sh -c ‘/usr/bin/python
/home/ubuntu/.ansible/tmp/ansible-tmp-1487398723.48-100968102221507/git.py;
rm -rf
“/home/ubuntu/.ansible/tmp/ansible-tmp-1487398723.48-100968102221507/”

/dev/null 2>&1 && sleep 0′ fatal: [localhost]: FAILED! => {
“changed”: false,
“cmd”: [
“/usr/bin/git”,
“fetch”,
“–tags”,
“origin”
],
“failed”: true,
“invocation”: {
“module_args”: {
“accept_hostkey”: true,
“bare”: false,
“clone”: true,
“depth”: null,
“dest”: “/etc/dotfiles”,
“executable”: null,
“force”: false,
“key_file”: “/etc/id_rsa_ghe”,
“recursive”: true,
“reference”: null,
“refspec”: null,
“remote”: “origin”,
“repo”: “[email protected]:code/test-repo.git”,
“ssh_opts”: null,
“track_submodules”: false,
“umask”: null,
“update”: true,
“verify_commit”: false,
“version”: “HEAD”
},
“module_name”: “git”
},
“msg”: “Не удалось загрузить объекты и ссылки удаленного репозитория: ОШИБКА: Репозиторий не найден.\nfatal: Не удалось прочитать удаленный
репозиторий.\n\nПожалуйста, убедитесь, что у вас есть правильные права
доступа\nи что репозиторий существует.\n” }

Похоже, что в вашем задании клонировать проект test-repo есть синтаксическая ошибка, и именно поэтому Ansible не может найти репозиторий. Замените : на / для параметра repo следующим образом:

- name: клонировать проект test-repo
  git:
    repo: [email protected]/code/test-repo.git
    dest: /etc/test-repo
    accept_hostkey: true
    key_file: /etc/id_rsa_ghe

Вы используете :, чтобы определить нестандартный порт.

Ответ или решение

Проблема, с которой вы столкнулись при использовании Ansible для клонирования репозитория из корпоративного сервера Git, требует комплексного анализа и выявления возможных причин ошибки. Давайте разберем вашу конфигурацию и проанализируем, что могло привести к сообщению об ошибке "Repository not found":

1. Проверка SSH-ключа

Ваша конфигурация включает использование SSH-ключа для аутентификации при доступе к репозиторию. Убедитесь, что:

  • SSH-ключ (id_rsa_ghe), используемый вами, действительно добавлен в настройки доступа вашего репозитория на сервере Git.
  • Ключ имеет правильные права доступа (0600), что также указано в вашем плейбуке.
  • Вы используете правильный SSH-адрес для клонирования репозитория. Убедитесь, что ему предшествует ssh:// или что используется корректный синтаксис ([email protected]:path/to/repo.git).

2. Синтаксис URL репозитория

Из предоставленной ошибки видно, что вы используете синтаксис, который может быть интерпретирован неправильно. Обратите внимание на использование двоеточия и слэша. Когда вы указываете репозиторий в формате user@host:repo, это означает доступ через SSH. Если вы используете обычный путь к репозиторию, он должен выглядеть как ssh://user@host/path/to/repo.git.

Исправьте следующее в вашем коде:

- name: clone test-repo project
  git:
    repo: ssh://[email protected]/code/test-repo.git
    dest: /etc/test-repo
    accept_hostkey: true
    key_file: /etc/id_rsa_ghe

3. Проверка доступа к репозиторию

Убедитесь, что у пользователя, к которому относится SSH-ключ, есть необходимые права доступа к репозиторию test-repo. Попробуйте вручную выполнить команду git clone, используя тот же SSH-ключ:

ssh -i /etc/id_rsa_ghe [email protected]:code/test-repo.git

Если вы видите аналогичную ошибку, значит, проблема связана с правами доступа или существованием репозитория.

4. Версия Ansible и git

Вы используете Ansible версии 2.2.1, которая может иметь проблемы совместимости с некоторыми более новыми версиями Git. Проверьте, не рекомендуется ли обновление Ansible или Git до более стабильных и поддерживаемых версий. Версия Ubuntu 14.04 также устарела, и использование более свежей версии операционной системы может помочь избежать многих проблем.

5. Проверка сетевых подключений

Если сервер Git находится за корпоративным брандмауэром, убедитесь, что ваш сервер, на котором вы запускаете Ansible, имеет доступ к корпоративной сети. Возможно, потребуется внести изменения в сетевые настройки или использовать VPN для доступа.

Заключение

Соблюдая все вышеперечисленные пункты, вы сможете решить проблему с клонированием репозитория. Если проблема сохраняется, рассмотрите возможность получения подробной информации о конфигурации Git-сервера и пересмотрите журналы ошибок для получения дополнительной информации о проблемах доступа.

Оцените материал
Добавить комментарий

Капча загружается...