2015-04-19 27 views
14

Próbowałem uzyskać Ansible, aby zapewnić zdalną maszynę i chcę, aby zdalna maszyna była skonfigurowana z własnymi kluczami i miała możliwość klonowania repozytoria git z Bitbucket.Jak używać kluczy SSH zdalnej maszyny w module ansibla git

Użytkownik jest skonfigurowany, ma swój własny id_rsa.pub, a klucz został zarejestrowany przy pomocy bitbucket.

Ale kiedy używam modułu Ansible Git, wygląda na to, że moduł zawsze próbuje użyć klawiszy z komputera, na którym uruchomiono czytnik.

Jak ustawić moduł git w celu użycia id_rsa.pub ze zdalnego komputera?

odpowiedniego zadania to:

- name: be sure prom-king has an up-to-date clone of its own repository 
    git: 
    repo: "ssh://ddcrn[email protected]/prom-king.git" 
    dest: /home/promking/prom-king 
    accept_hostkey: yes 
    clone: yes 
    key_file: /home/promking/.ssh/id_rsa.pub 
    update: yes 

Odpowiedni asortyment jest to

# inventory file for use with the vagrant box in the testing directory. 
[prom-king] 
192.168.168.192 ansible_ssh_host=127.0.0.1 ansible_sudo=true ansible_connection=ssh ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=testing/.vagrant/machines/default/virtualbox/private_key 
+0

Zapomniałem wspomnieć ... mogę dostać pracy z klonu https (ale wymaga to hasła w adresie URL, którego chcę uniknąć) i kiedy ten klon jest pobierany, wszystkie pliki są własnością root na zdalnym komputerze - co również nie jest pożądane. – jschank

+0

Wklej w książeczce, której używasz. Może to być po prostu, że git, gdy działa na zdalnym komputerze, prosi o dodanie bitbucket do polecenia known_hosts (tak/nie), które zawsze robi po uruchomieniu po raz pierwszy na nowej maszynie – Zasz

+0

Skąd wiesz, że git używa klucza z twojego komputera playbooka? Wszystkie moduły ansaly działają na zdalnym komputerze, chyba że wyraźnie uruchomisz 127.0.0.1 lub oznaczysz go jako local_action lub użyj delegacji. – Zasz

Odpowiedz

21

ten sposób wdrożyć z Github przy użyciu pliku klucza ustawione na serwerze zdalnym. Jeżeli parametr keyfile dla git nie poskutkuje, to coś jest nie tak z playbook:

- name: Creates .ssh directory for root 
    sudo: yes 
    file: path=/root/.ssh state=directory 

# This public key is set on Github repo Settings under "Deploy keys" 
- name: Upload the private key used for Github cloning 
    sudo: yes 
    copy: src=keys/github dest=/root/.ssh/github 

- name: Correct SSH deploy key permissions 
    sudo: yes 
    file: dest=/root/.ssh/github mode=0600 

- name: Deploy site files from Github repository 
    sudo: yes 
    git: 
    repo: [email protected]:miohtama/foobar.git 
    dest: /srv/django/foobar 
    key_file: /root/.ssh/github 
    accept_hostkey: yes 
    force: yes 
+4

Powoduje zawieszenie się, jeśli klucz ma frazę hasła. – Suvitruf

+0

Podejście używające 'sudo' wyświetla teraz' [DEPRECATION OSTRZEŻENIE]: Zamiast sudo/sudo_user użyj polecenia stań/stój_użytkownik i upewnij się, że metoda_witaj jest "sudo" (domyślnie) '. – halfer

+1

Zauważyłem, że zamiana 'sudo: yes' powyżej z' stać_użytkownikiem: root' działa dobrze dla mnie i usuwa powiadomienie o wycofaniu. Już ustawiłem 'stać' i' staja_method' na początku playbooka. – halfer

8

Jeśli dobrze rozumiem to poprawnie, robisz - lub chcą - wdrożyć swój klucz prywatny do zdalnej maszyny, dzięki czemu można sklonować repo. Uważam, że zamiast tego należy użyć przekazywania klucza. W zestawie .ssh/config to:

ForwardAgent yes 

Lub jeśli chcesz ograniczyć to do ansibl można zdefiniować go w ansible.cfg:

[ssh_connection] 
ssh_args= -A 
+0

Dzięki! Na wszelki wypadek, otrzymuję jazdę z nieprzyjemnymi komunikatami ostrzegawczymi za pomocą 'ssh_args = -o ForwardAgent = yes'. – luvejo