automatizar el uso de la key local SSH para la implementación de git con ansible

Estoy trabajando con vagrants y ansible. Quiero automatizar la function de implementación de ansible ( Puede verificar mi repository aquí ). Para este propósito, estoy tratando de implementar mi key ssh local en mi VPS y mi máquina huésped vagrant (estoy intentando el reenvío de agente SSH).

GOL

Automatice el process de implementación con git usando ansible. Ya he hecho esto:

--- - name: read-write git checkout from github git: repo={{ repository }} dest=/home/site 

Dónde:

 --- # Variables here are applicable to all host groups repository: git@bitbucket.org:dgnest/dgnest.git 

PROBLEMA

Cuando lo hago: "disposition vagabunda", la console se detiene aquí:

 TASK: [deployment | read-write git checkout from github] ********************** 

Eso es porque no he configurado las teclas ssh.

LO INTENTÉ

Me gustaría utilizar la opción key_file que tiene el module git de ansible. Pero falla también.

 --- - name: read-write git checkout from github git: repo={{ repository }} dest=/home/site key_file=/home/oscar/.ssh/id_rsa.pub 

Otra opción es copyr mi ~ / ssh / id_rsa.pub en cada VPS y vagrant, pero mi problema en este caso es manejar con todos los diferentes usuarios. Vagrant usa el usuario "vagrant" y mi VPS usa otros, ¿así que tuve que poner mi key local ssh en cada uno de estos usuarios?

Espero que puedas ayudarme. Gracias.

ACTUALIZAR:

Acabo de automatizar la respuesta @leucos (Gracias). Copia de las keys rsa privadas y públicas. Comparto este enlace con la implementación.

Si eliges el key_file , supongo que la key debe estar en la máquina VPS / vagrant. Así que es posible que desee copyrlo primero. Tenga en count que necesita una key privada aquí, no una pública.

Para su segunda opción, puede enviar su key a usuarios específicos según el tipo de instancia. Supongamos que el usuario en VPS es vpsuser y que usted despliega principalmente en estos VPS, usted podría hacer:

group_vars / all:

 deploy_user=vpsuser 

group_vars / vagrant

 deploy_user=vagrant 

Entonces, podrías tener un libro de jugadas como:

 - name: send key to remote deploy user copy: src=files/private_key dest=~/{{deploy_user}}/.ssh/priv_key - name: read-write git checkout from github git: repo={{ repository }} dest=/home/site key_file=~/{{deploy_user}}/.ssh/priv_key 

Sin embargo, no tengo idea de cómo se podría solicitar la contraseña para la key privada remota (no creo que ansible permita el reenvío de agente de authentication por defecto (verifique la salida -vvvv ), puede que tenga que ~/.ansible.cfg su ~/.ansible.cfg )

Sugiero que use una key específica para fines de implementación (con permissions permanentes de solo lectura en su repository de git). De esta manera, su key privada no saldrá de su máquina. Haga que esta key especial no tenga contraseña. Creo que la compensación de security es aceptable, ya que protegerá tu código, tu código se verificará en la máquina donde está la key privada, por lo que el juego ya terminó.

Otra opción es distribuir su aplicación desde su punto de venta local utilizando ansible: hacer un tarball, copyr files, untar, y está configurado. De esta forma, no necesita dejar cnetworkingenciales de security en su VPS.

Buena suerte.

No tiene que copyr su key SSH local en serveres remotos. En su lugar, solo crea un file llamado ansible.cfg en el directory desde el que está ejecutando las secuencias de commands de implementación y coloca las siguientes configuraciones:

 [ssh_connection] ssh_args = -o ForwardAgent=yes 

Eso es todo, ahora su identidad local se reenvía a los serveres remotos que administra con Ansible.