ansible: el module git está colgando

Estoy usando Ansible y estoy teniendo dificultades para que funcione el module git. He leído varias publicaciones de personas que tienen el mismo problema, miré el documento de ansible, y probé casi todo. Encontré un tutorial claro que seguí hasta que usaron git, pero nuevamente tengo un problema cuando uso mi repository …: / La tarea de git simplemente se cuelga … ¡no hay error, simplemente está bloqueada!

Aquí está mi file de host:

[web] dev1 ansible_ssh_host=10.0.0.101 ansible_ssh_user=root 

Esta es una VM vagabunda ejecutándose en virtualbox en mi computadora.

Tomé el libro de jugadas de este tutorial e hice todos los pasos hasta el paso 08: https://github.com/leucos/ansible-tuto/tree/master/step-08

Lo ejecuto en mi VM, funciona bien, luego agrego una tarea "Implementar mi código" para usar mi repository … pero esta tarea no funciona. Es un repository privado en bitbucket. ¿Hace alguna diferencia?

 - hosts: web tasks: - name: Deploy our awesome application action: git repo=https://github.com/leucos/ansible-tuto-demosite.git dest=/var/www/awesome-app tags: deploy - name: Deploy my code action: git repo=https://YAmikep@bitbucket.org/YAmikep/djangotutorial.git dest=/var/www/my-app tags: deploy 

Puede haber algo con el usuario, o el usuario ejecutando ansible, o las keys, etc., pero probé durante horas y ahora estoy aún más confundido … Simplemente no sé qué hacer para depurar eso ahora y averigua qué está mal y qué me falta.

Gracias.

Hay un par de razones por las que el module git podría estar colgando, pero lo más posible es que el command git clone esté esperando una confirmación si la key del host debe agregarse a los serveres conocidos del server. Para verificar si este es el problema, ejecute ansible con la bandera: --verbose , para que se ejecute en modo detallado, esto le dará más información sobre el error.

Si confirma que los hosts conocidos son el problema, entonces tiene dos opciones:

Solución 1 :

Para evitar este problema con el module git , use el parámetro accept_hostkey .

 - name: ensure jquery repo is available git: git@github.com:jquery/jquery.git version=master accept_hostkey=True 

Solución 2 :

Utilice el ansible-sshknownhosts terceros ansible-sshknownhosts antes de usar el module core git :

 - name: ensure github is a known host action: sshknownhosts host=github.com state=present - name: ensure jquery repo is available git: git@github.com:jquery/jquery.git version=master accept_hostkey=True 

Como the knownhosts no es un module core ansible, deberá instalarlo primero, consulte los documentos de github repo para get más información sobre cómo instalarlo.


Otra solución sería desactivar la comprobación de key de host ssh, pero esto tiene implicaciones de security, por lo que a less que realmente sepa lo que está haciendo, es mejor evitar esto.

Intenté básicamente todo (aceptar keys, cambio de configuration ssh, file known_hosts, reenvío ssh-agent y se me olvidó qué más) sin éxito.

Después de sacarme todo el pelo, eventualmente definí el problema como un hecho de que la key privada de SSH puede requerir una frase de contraseña.

No lo noté antes porque el agente ssh local se encargó de usar la frase key almacenada del set de keys para que todo funcionara localmente. Usando Ansible en una Máquina Virtual Vagabunda, este mecanismo no estaba disponible y el module de git se quedó atascado esperando a que se ingrese la frase de contraseña. Una vez que me di count de la posible causa, creé un par de keys especial sin frase de contraseña (se conocen los aspectos de security, ¿no?) Y agregué la key pública a bitbucket (/ github / cualquiera). Al usar esta tecla en particular, las cosas pasaron sin problemas.

Si el usuario requiere una contraseña, el module git puede bloquearse si no se proporciona uno mientras el ejecutable git lo solicita en segundo plano. Para su parámetro repo, intente usar https://YAmikep:{yourpassword}@bitbucket.org/YAmikep/djangotutorial.git . O bien, intente utilizar las teclas git / ssh para que no se requiera contraseña.

Me he encontrado con esto, y en mi caso git cuelgo para confirmar la nueva key ssh para un host (bitbucket.org). Esto podría ser resuelto por el module sshknownhosts , que se ejecuta antes de git para poblar .ssh / known_hosts en el host, por lo que luego git no necesita colgarlo.

Pero tenga cuidado con posibles problemas de security, lea la documentation del module.

También he tenido esto aparentemente causado por múltiples agentes ssh en ejecución (cliente osx). Arreglado por

killall ssh-agent && eval `ssh-agent` && ssh-add -K