J'ai configuré tout ce que je pouvais trouver, mais le clonage d'un dépôt à partir de GitHub bloque le processus d'approvisionnement.
J'ai:
.ssh/config
Host github.com
ForwardAgent yes
StrictHostKeyChecking no
clé privée copiée
vagrant
le jeu est:
- name: Checkout from git
git: [email protected]:username/repositoryname.git dest=/srv/website
Juste pour développer la réponse de tillda, cette configuration peut être placée dans un fichier ansible.cfg à côté de votre playbook. par exemple.:
ansible.cfg
[defaults]
transport = ssh
[ssh_connection]
ssh_args = -o ForwardAgent=yes
Je dirais qu'il vaut mieux faire cela que de définir une variable env, car le placer dans un fichier conf est à la fois plus déclaratif et minimisera également les étapes nécessaires pour que d'autres personnes avec lesquelles vous travaillez puissent aller avec un projet.
Documents de conf: http://docs.ansible.com/intro_configuration.html#the-ansible-configuration-file
Exemple de fichier de configuration: https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg
Je veux partager la réponse qui a fonctionné pour moi:
https://groups.google.com/forum/#!msg/ansible-project/u6o-sWynMjo/69UwJfJPq7cJ - Depuis Ansible Google Group
Pour ansible, ssh-add pour charger les clés ssh dans votre machine hôte en premier. Utilisez ensuite "ssh" comme type de connexion avec le transfert activé.
Tel que:
$ ssh-add $ export ANSIBLE_TRANSPORT="ssh" $ export ANSIBLE_SSH_ARGS="-o ForwardAgent=yes"
Voir le manuel de ssh-add pour exécuter l'agent.
Les documents Ansible pour ssh-args
sont http://docs.ansible.com/intro_configuration.html#ssh-args
ça marche pour moi
- name: ensure known hosts
Shell: touch ~/.ssh/known_hosts
- name: remove github.com from known Host
Shell: ssh-keygen -R github.com
# >> instead of > to keep existing known_hosts file
- name: ensure github.com in known Host
Shell: ssh-keyscan -H github.com >> ~/.ssh/known_hosts
Dans mon cas, le problème était la chaîne de référentiel. J'avais un référentiel privé bitbucket défini comme:
git @ tsrs ...
mais cela devrait être:
ssh : // git @ tsrs ...
Notez l'absence subtile du préfixe "ssh". La partie bizarre est que si je clone un dépôt github sans le "ssh", ça marche très bien!
Ajoutez à ansible.cfg le paramètre suivant:
[defaults]
Sudo_flags=-HE
J'ai eu une erreur:
bitbucket.org a une clé d'hôte inconnue. Définissez accept_hostkey sur True ou ajoutez manuellement la clé d'hôte avant d'exécuter le module git
J'ai dû ajouter un accept_hostkey
paramètre de ma commande de module git:
playbook:
tasks:
- name: clone
git: [email protected]:robusta-code/xyz.git
dest=/app
accept_hostkey=yes
ansible.cfg
[ssh_connection]
ssh_args = -o ForwardAgent=yes