2017-04-18 3 views
0

Wie kann ich öffentliche SSH-Schlüssel von jedem Knoten auf einen möglichen Server kopieren?Ansible: Wie kopiere ich den öffentlichen Schlüssel vom Knoten zum lokalen?

Mit anderen Worten make: ssh-copy-id user @ ansible_server?

Ich möchte es automatisch mit Playbook-Datei machen.

ich eine Lösung gemacht:

- name: ssh-copy-id 
    hosts: builder 
    become: true 
    tasks: 
    - name: generate ssh keys on node 
     user: 
     name: user 
     generate_ssh_key: yes 
     ssh_key_bits: 2048 
     ssh_key_file: .ssh/id_rsa 

    - name: get content of public key (node) 
     shell: cat "/home/user/.ssh/id_rsa.pub" 
     changed_when: false 
     register: public_key 

    - name: append public key from node to local authorized_keys 
     lineinfile: 
     line: "{{ public_key.stdout }}" 
     insertafter: EOF 
     dest: /local 
     delegate_to: 127.0.0.1 
+0

Beginnen Sie mit [holen] (http: // docs.ansible.com/ansible/fetch_module.html). Aber deine Aufgabe ist ein bisschen seltsam, ehrlich. Warum benötigen Sie öffentliche Schlüssel von entfernten Knoten? –

+0

Warum würden Sie das tun? – techraf

+0

Um rsync von Knoten zu verwenden (Protokolle zum Server kopieren) – themis

Antwort

0

Wenn Sie SSH-Schlüssel in der gleichen Textbuch erzeugen, nur das Ergebnis erfassen und verwenden es:

- name: generate ssh keys on node 
    user: 
    name: user 
    generate_ssh_key: yes 
    ssh_key_bits: 2048 
    ssh_key_file: .ssh/id_rsa 
    register: user_res 

- name: append public key from node to local authorized_keys 
    lineinfile: 
    line: "{{ user_res.ssh_public_key }}" 
    insertafter: EOF 
    dest: /local 
    delegate_to: 127.0.0.1 
+0

Aber es wird nicht funktionieren, weil ssh-copy-id auch Datei macht: known_hosts – themis

+0

Sie können jederzeit 'ssh-keyscan' Task hinzufügen. –

Verwandte Themen