Ansible: Instalar package con pip de un repository privado de git

Estoy intentando instalar un package de un repository de git privado usando el module de pip de ansible de esta manera:

- name: Install my package pip: name='git+ssh://git@github.com/mycompany/my-repo.git#egg=0.1.0' virtualenv=/path/to/venv 

Pero esto se bloquea cuando trato de aprovisionar esto con vagrant, muy probablemente porque solicita confirmación para agregar la key a la list de hosts conocidos. De hecho, cuando corro esto en vagrant:

 pip install git+ssh://git@github.com/mycompany/my-repo.git#egg=0.1.0 

Solicita confirmación para agregar github a los hosts conocidos y luego funciona bien.

Si lo clono con accept_hostkey=yes :

 - name: Clone repo git: repo=git@github.com:mycompany/my-repo.git dest=/path/to/dest accept_hostkey=yes recursive=no 

funciona bien porque acepta la key de host que se copy en vagrant. Con el module pip, no hay tal opción, ¿se puede evitar esto? Como alternativa, podría hacer un clon y luego una installation de python setup.py install pero preferiría hacerlo en un solo paso con pip.

El command de github.com se bloquea porque github.com no se encuentra entre los hosts conocidos de su usuario de Ansible. Debe agregar la huella digital de key SSH de /home/user/.ssh/known_hosts file /home/user/.ssh/known_hosts . Afortunadamente, known_hosts ahora es un module disponible en Ansible 1.9: http://docs.ansible.com/known_hosts_module.html

 - known_hosts: path=/home/user/.ssh/known_hosts name=github.com key="|1|ba0yHIHdbaD9nswn12xSOyD8DFE=|EVZBrcr46cYcmx6qFRIrzTvWUX4= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" 

Si está utilizando Ansible <1.9, puede usar los commands estándar de ssh-keygen :

 - shell: ssh-keygen -l -f /home/user/.ssh/known_hosts -F github.com register: github_host_is_known - shell: ssh-keyscan -H github.com >> /home/user/.ssh/known_hosts when: github_host_is_known|failed 

Ejecute esta tarea para agregar la key de host a su file known_hosts :

 - name: Whitelist github.com shell: if [ ! -n "$(grep "^github.com " ~/.ssh/known_hosts)" ]; then ssh-keyscan github.com >> ~/.ssh/known_hosts 2>/dev/null; fi 

Si este problema se trata de llaves de host autorizadas y no de tener una key privada correcta en su lugar, entonces puede hacer lo siguiente.

Siempre puede autorizar manualmente las keys del host en "~ / .ssh / authorized_keys" antes de ejecutar pip .

Ejemplo:

http://sofes.miximages.com/a/24305223/315168

Para tener una key privada correcta para acceder al repository privado de Github, puede usar el reenvío de agente SSH.