Как использовать удаленные SSH-ключи машины в недоступном модуле git

Я пытаюсь получить Ansible для предоставления удаленной машины, и я хочу, чтобы удаленный компьютер был настроен со своими собственными ключами и имел возможность клонировать репозитории git из Bitbucket.

Пользователь настроен, имеет свой собственный id_rsa.pub, и ключ был зарегистрирован с помощью битбакета.

Но, когда я использую модуль Ansible git, он выглядит так, как будто модуль всегда пытается использовать ключи от компьютера, на котором запущена playbook.

Как мне получить модуль git для использования id_rsa.pub с удаленной машины?

Соответствующая задача такова:

- 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

Соответствующий инвентарь - это

# 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

Ответы

Ответ 1

Вот как я развертываю из Github, используя файл ключа, установленный на удаленном сервере. Если параметр keyfile для git не работает, что-то не так с вашей книжкой:

- 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

Ответ 2

Если я это правильно понимаю, вы - или хотите - развернуть свой закрытый ключ на удаленном компьютере, чтобы вы могли клонировать репо. Я считаю, что вместо этого вы должны использовать переадресацию ключей. В вашем .ssh/config установите это:

ForwardAgent yes

Или, если вы хотите ограничить это до Ansible, вы можете определить его в своем ansible.cfg:

[ssh_connection]
ssh_args= -A