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.