web-dev-qa-db-fra.com

GIT sur SSH dans Ansible se bloque, même si le transfert de l'agent ssh est configuré

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:

  • serveur dans unknown_hosts
  • .ssh/config

    Host github.com
      ForwardAgent yes
      StrictHostKeyChecking no
    
  • clé privée copiée

  • la clé publique se trouve dans les clés autorisées
  • la commande s'exécute en tant qu'utilisateur vagrant
  • le jeu est:

    - name: Checkout from git
      git: [email protected]:username/repositoryname.git dest=/srv/website
    
31
tillda

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

60
Tom Seldon

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

14
tillda

ç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
7
locojay

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!

1
Vini.g.fer

Ajoutez à ansible.cfg le paramètre suivant:

[defaults]
Sudo_flags=-HE
1
Lebnik

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
0
Nicolas Zozol