GIT через SSH в Ansible зависает, в то время как ssh-agent forwarding настроен
Я настроил все, что мог найти, но все же клонирование репо из GitHub зависает процесс подготовки.
У меня есть:
- сервер в known_hosts
-
.ssh/конфигурации
Host github.com
ForwardAgent yes
StrictHostKeyChecking no
-
скопированный закрытый ключ
- открытый ключ находится в authorized_keys
- команда выполняется как
vagrant
пользователь
-
воспроизведение:
- name: Checkout from git
git: [email protected]:username/repositoryname.git dest=/srv/website
Ответы
Ответ 1
Чтобы развернуть ответ до ответа, этот конфиг может быть помещен в файл ansible.cfg вместе с вашей книгой. например:.
ansible.cfg
[defaults]
transport = ssh
[ssh_connection]
ssh_args = -o ForwardAgent=yes
Я бы сказал, что лучше сделать это, чем устанавливать в качестве переменной env, поскольку размещение его в файле conf является еще более декларативным, а также минимизирует шаги, необходимые для других людей, с которыми вы можете работать, для перехода с проектом.
Конф. документы:
http://docs.ansible.com/intro_configuration.html#the-ansible-configuration-file
Пример файла конфигурации:
https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg
Ответ 2
Я хочу поделиться тем, что сработало для меня:
https://groups.google.com/forum/#!msg/ansible-project/u6o-sWynMjo/69UwJfJPq7cJ - Из группы с угрозами Google
Для возможности ssh-add сначала загрузить ssh-ключи в ваш хост-компьютер. Затем используйте "ssh" в качестве типа соединения с включенной переадресацией.
Например:
$ ssh-add
$ export ANSIBLE_TRANSPORT="ssh"
$ export ANSIBLE_SSH_ARGS="-o ForwardAgent=yes"
См. руководство для ssh-add для запуска агента.
Ansible docs для ssh-args
: http://docs.ansible.com/intro_configuration.html#ssh-args
Ответ 3
это работает для меня
- name: ensure known hosts
shell: touch ~/.ssh/known_hosts
- name: remove github.com from known host
shell: ssh-keygen -R github.com
# >> instead of > to keep existing known_hosts file
- name: ensure github.com in known host
shell: ssh-keyscan -H github.com >> ~/.ssh/known_hosts
Ответ 4
Добавьте к ansible.cfg следующий параметр:
[defaults]
sudo_flags=-HE
Ответ 5
В моем случае проблема была в строке репозитория. У меня было частное хранилище bitbucket:
git @tsrs...
но это должно быть:
SSH://git @tsrs...
Обратите внимание на незначительное отсутствие префикса "ssh". Странная часть заключается в том, что если я клонирую репозиторий github без "ssh", он отлично работает!
Ответ 6
У меня была ошибка:
У bitbucket.org есть неизвестный ключ. Установите accept_hostkey в True или вручную добавьте ключ хоста до запуска модуля git
Мне пришлось добавить параметр accept_hostkey
в мою команду модуля git:
playbook:
tasks:
- name: clone
git: [email protected]:robusta-code/xyz.git
dest=/app
accept_hostkey=yes
ansible.cfg
[ssh_connection]
ssh_args = -o ForwardAgent=yes