J'ai essayé d'obtenir Ansible pour provisionner une machine distante, et je veux que la machine distante soit configurée avec ses propres clés, et ait la possibilité de cloner les référentiels git de Bitbucket.
L'utilisateur est configuré, possède son propre id_rsa.pub et la clé a été enregistrée avec bitbucket.
Mais, lorsque j'utilise le module Ansible Git, il semble que le module essaie toujours d'utiliser les clés de la machine exécutant le playbook.
Comment puis-je faire en sorte que le module git utilise id_rsa.pub depuis la machine distante?
La tâche pertinente est la suivante:
- 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
L'inventaire pertinent est le suivant
# 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
Voici comment je déploie à partir de Github en utilisant un ensemble de fichiers de clés sur le serveur distant. Si le paramètre keyfile
pour git
ne fonctionne pas, alors quelque chose ne va pas avec votre playbook:
- 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 je comprends bien, vous déployez ou souhaitez déployer votre clé privée sur la machine distante afin de pouvoir cloner le référentiel. Je pense que vous devriez plutôt utiliser le transfert de clés. Dans ton .ssh/config
définissez ceci:
ForwardAgent yes
Ou si vous souhaitez limiter cela à Ansible, vous pouvez le définir dans votre ansible.cfg
:
[ssh_connection]
ssh_args= -A