Назад | Перейти на главную страницу

Ansible зависает на git clone

Я пытаюсь настроить задачу, которая клонирует репо в бродячем ящике. Я правильно настроил пересылку агента, добавил сервер репо в ~ / .ssh / known_hosts и подтвердил, что могу войти в систему как бродячий пользователь и клонировать репо без запроса учетных данных, а ключ хоста не проверяется (git clone работает без заминка).

Моя задача настроена следующим образом:

- name: Check out pname dev branch
  git: repo=ssh://git@gitlab.dev-web.ca:dev-team/pname.git
    dest=/home/vagrant/pname
    version=dev
    accept_hostkey=yes
  become: yes
  become_user: vagrant

Моя задача просто зависает, подробный набор на -vvvv дает следующий результат:

<10.210.55.82> ESTABLISH CONNECTION FOR USER: vagrant
<10.210.55.82> REMOTE_MODULE git repo=ssh:********@dev-web.ca:dev-team/project.git dest=/home/vagrant/project_folder version=dev accept_hostkey=yes
<10.210.55.82> EXEC ssh -C -tt -vvv -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/stef/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o Port=22 -o IdentityFile="/Users/stef/devbox_cp/.vagrant/machines/default/parallels/private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=30 10.210.55.82 /bin/sh -c 'mkdir -p /tmp/ansible-tmp-1449685034.66-224282565675976 && chmod a+rx /tmp/ansible-tmp-1449685034.66-224282565675976 && echo /tmp/ansible-tmp-1449685034.66-224282565675976'
<10.210.55.82> PUT /var/folders/q1/21hlrxsd4y1_hr8n5kx4cq540000gn/T/tmp8KpkMe TO /tmp/ansible-tmp-1449685034.66-224282565675976/git
<10.210.55.82> EXEC ssh -C -tt -vvv -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/stef/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o Port=22 -o IdentityFile="/Users/stef/devbox_cp/.vagrant/machines/default/parallels/private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=30 10.210.55.82 /bin/sh -c 'chmod a+r /tmp/ansible-tmp-1449685034.66-224282565675976/git'
<10.210.55.82> EXEC ssh -C -tt -vvv -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/stef/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o Port=22 -o IdentityFile="/Users/stef/devbox_cp/.vagrant/machines/default/parallels/private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=30 10.211.55.82 /bin/sh -c 'sudo -k && sudo -H -S -p "[sudo via ansible, key=fhtkrnevvknmiinzxxqzrvyofblvkzhi] password: " -u vagrant /bin/sh -c '"'"'echo BECOME-SUCCESS-fhtkrnevvknmiinzxxqzrvyofblvkzhi; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /tmp/ansible-tmp-1449685034.66-224282565675976/git'"'"'' 

Есть ли способ выяснить, что сдерживает задачу git clone?

Обновить:

Выполнение следующей задачи работает должным образом:

- name: Clone project dev branch
  shell: git clone git@gitlab.dev-web.ca:dev-team/project.git /home/vagrant/www/project
  sudo: false
  args:
 creates: /home/vagrant/www/project

При этом использование собственного обработчика задач git не работает (больше не зависает):

# This task does not work!
- name: Check out project dev branch
  git: repo=ssh://git@gitlab.dev-web.ca:dev-team/project.git
       dest=/home/vagrant/www/project
       accept_hostkey=yes
       force=yes
  sudo: false

Это отображаемая ошибка:

failed: [default] => {"cmd": "/usr/bin/git ls-remote 'ssh:********@gitlab.cgi-web.ca:dev-team/project.git' -h refs/heads/HEAD", "failed": true, "rc": 128}
stderr: GitLab: The project you were looking for could not be found.
fatal: Could not read from remote repository.

Почему будет работать задача оболочки по сравнению с собственной задачей git?

Похоже, у вас есть синтаксическая ошибка в repo вариант. Вы пытались заменить : с участием /?

Взгляните на документация модуля:

Example just ensuring the repo checkout exists
- git: repo=git://foosball.example.org/path/to/repo.git dest=/srv/checkout update=no

Кажется, что Ansible не использует : в URL-адресах репо, даже если вы используете SSH протокол.