2015-04-19 20 views
14

Ho cercato di ottenere Ansible per il provisioning di una macchina remota e voglio che la macchina remota sia configurata con le proprie chiavi e abbia la possibilità di clonare git repository da Bitbucket.Come utilizzare le chiavi SSH della macchina remota nel modulo git ansable

L'utente è configurato, ha il proprio id_rsa.pub e la chiave è stata registrata con bitbucket.

Tuttavia, quando uso il modulo Ansible Git, sembra che il modulo cerchi sempre di utilizzare i tasti della macchina che esegue il playbook.

Come si ottiene il modulo git per utilizzare id_rsa.pub dal computer remoto?

Il compito rilevante è questo:

- name: be sure prom-king has an up-to-date clone of its own repository 
    git: 
    repo: "ssh://[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 

L'inventario rilevante è questo

# 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

dimenticato di dire ... posso ottenere il clone di lavorare con https (ma che richiede la password nell'URL, che voglio evitare) e quando viene recuperato quel clone, i file sono tutti di proprietà di root sul computer remoto - che non è nemmeno desiderato. – jschank

+0

Incolla nel playbook in uso. Potrebbe essere solo quel git quando è in esecuzione su una macchina remota, chiede di aggiungere bitbucket al prompt known_hosts (yes/no) che fa sempre quando è in esecuzione per la prima volta su una nuova macchina – Zasz

+0

Come sai che git usa la chiave dalla tua macchina da gioco? Tutti i moduli ansibili vengono eseguiti sulla macchina remota a meno che non si esegua esplicitamente su 127.0.0.1 o si contrassegni come local_action o si utilizzi la delega. – Zasz

risposta

21

Questo è come mi schiero da Github tramite un file chiave impostato sul server remoto. Se il parametro keyfile per git non funziona, allora qualcosa non va con il vostro 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

Si blocca se la chiave ha passphrase. – Suvitruf

+0

Un approccio che usa 'sudo' ora visualizza' [AVVERTENZA DI AVVISTAMENTO]: Invece di sudo/sudo_user, usa diventare/diventare_user e assicurati che diventare_method sia 'sudo' (predefinito) '. – halfer

+1

Ho scoperto che lo scambio di 'sudo: yes' qui sopra con' become_user: root' funziona bene per me, e rimuove l'avviso di deprecazione. Ho già impostato 'become' e' become_method' all'inizio del playbook. – halfer

8

Se ho capito bene, si fa - o vuole - distribuire la chiave privata al computer remoto in modo da poter clonare il pronti contro termine. Credo invece che dovresti usare il key forwarding. Nella tua .ssh/config insieme questo:

ForwardAgent yes 

Oppure, se si desidera limitare questo per Ansible è possibile definire nel tuo ansible.cfg:

[ssh_connection] 
ssh_args= -A 
+0

Grazie! Nel caso in cui, ricevo dei brutti messaggi di avviso usando 'ssh_args = -o ForwardAgent = yes'. – luvejo

Problemi correlati