clone git repo ansible
¿Cómo uso las claves SSH de la máquina remota en un módulo git ansible? (2)
He estado tratando de obtener Ansible para aprovisionar una máquina remota, y quiero que la máquina remota se configure con sus propias claves y tenga la capacidad de clonar los repositorios git de Bitbucket.
El usuario está configurado, tiene su propio id_rsa.pub y la clave se ha registrado con bitbucket.
Pero, cuando uso el módulo Ansible Git, parece que el módulo siempre intenta usar las teclas de la máquina que ejecuta el libro de jugadas.
¿Cómo consigo que el módulo git use el id_rsa.pub desde la máquina remota?
La tarea relevante es esta:
- name: be sure prom-king has an up-to-date clone of its own repository
git:
repo: "ssh://[email protected]/prom-king.git"
dest: /home/promking/prom-king
accept_hostkey: yes
clone: yes
key_file: /home/promking/.ssh/id_rsa.pub
update: yes
El inventario relevante es este
# inventory file for use with the vagrant box in the testing directory.
[prom-king]
192.168.168.192 ansible_ssh_host=127.0.0.1 ansible_sudo=true ansible_connection=ssh ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=testing/.vagrant/machines/default/virtualbox/private_key
Así es como implemento desde Github usando un conjunto de archivos de claves en el servidor remoto. Si el parámetro de keyfile
para git
no funciona, entonces hay algún problema con tu libro de jugadas:
- name: Creates .ssh directory for root
sudo: yes
file: path=/root/.ssh state=directory
# This public key is set on Github repo Settings under "Deploy keys"
- name: Upload the private key used for Github cloning
sudo: yes
copy: src=keys/github dest=/root/.ssh/github
- name: Correct SSH deploy key permissions
sudo: yes
file: dest=/root/.ssh/github mode=0600
- name: Deploy site files from Github repository
sudo: yes
git:
repo: [email protected]:miohtama/foobar.git
dest: /srv/django/foobar
key_file: /root/.ssh/github
accept_hostkey: yes
force: yes
Si entiendo esto correctamente, usted puede, o desea, implementar su clave privada en la máquina remota para poder clonar el repositorio. Creo que en su lugar deberías usar el reenvío de claves. En su .ssh/config
establezca esto:
ForwardAgent yes
O si desea limitar esto a Ansible, puede definirlo en su ansible.cfg
:
[ssh_connection]
ssh_args= -A