2015-06-29 13 views
6

Próbuję zainstalować pakiet z prywatnym git repo za pomocą modułu pip ansibl w ten sposób:ansibl: Instalacja pakietu z pip od prywatnego git repo

- name: Install my package 
    pip: name='git+ssh://[email protected]/mycompany/my-repo.git#egg=0.1.0' 
     virtualenv=/path/to/venv 

Ale to zawiesza się przy próbie przepis ten z vagrant, najprawdopodobniej dlatego, że monituje o potwierdzenie dodania klucza do listy znanych hostów. Rzeczywiście, gdy uruchomię to na włóczęgę:

pip install git+ssh://[email protected]/mycompany/my-repo.git#egg=0.1.0 

To skłania do potwierdzenia, aby dodać GitHub do gospodarzy znać, a następnie działa dobrze.

Gdybym sklonować go accept_hostkey=yes:

- name: Clone repo 
    git: [email protected]:mycompany/my-repo.git 
     dest=/path/to/dest 
     accept_hostkey=yes 
     recursive=no 

to działa dobrze, ponieważ akceptuje klucza hosta, który jest kopiowany na włóczęgę. Z modułem PIP nie ma takiej opcji, w żaden sposób? Jako alternatywa mogłem zrobić klon, a następnie python setup.py install, ale wolałbym to zrobić w jednym kroku z pip.

+0

Co się dzieje po uruchomieniu 'pip zainstalować git + ssh: // git @ github.com/mycompany/my-repo.git # egg = 0.1.0' ręcznie? –

+0

Działa dobrze, tak, przepraszam, powinienem był dodać te informacje – Tristan

+0

I robi to równie dobrze, gdy uruchamiasz polecenie poza bash, tj .: gdy polecenia środowiska nie są zdefiniowane? Spróbuj "unset HOME" i ponownie uruchom polecenie pip. –

Odpowiedz

0

Jeśli ten problem dotyczy autoryzowanych kluczy hosta, a nie o poprawnym kluczu prywatnym, możesz wykonać następujące czynności.

Możesz zawsze ręcznie autoryzować klucze hostów w "~/.ssh/authorized_keys" przed uruchomieniem pip.

Przykład:

https://stackoverflow.com/a/24305223/315168

Aby mieć prawidłowy klucz prywatny dostęp do prywatnej repozytorium GitHub można użyć przekierowania agenta SSH.

+0

Czy masz przykład użycia przekierowania agenta ssh w tym kontekście? – Tristan

1

Run to zadanie, aby dodać hostkey do pliku 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 
+0

Czy możesz wybrać klucz do generowania hosta za pomocą 'ssh-keycan'? – Tristan

+0

Co masz na myśli przez "który klucz"? Host ma tylko jeden klucz = jego tożsamość. – udondan

3

The checkout zawiesza polecenia, ponieważ github.com nie znajduje się wśród znanych gospodarzy swojej użytkownik ansibl. Należy dodać odcisk klucza klucza SSH github.com do pliku /home/user/.ssh/known_hosts. Na szczęście known_hosts jest teraz moduł dostępny w ansibl 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==" 

Jeśli używasz ansibl < 1.9, można używać standardowych ssh-keygen polecenia:

- 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 
+0

To by działało, ale wolałbym, aby klucz nie był zakodowany w książce – Tristan

+0

Edytowany, aby nie mieć zakodowanego klucza w książeczce. –