2016-04-27 13 views
0

ich diese grundlegende Textbuch haben, die in der public_keys Ordner des Benutzers Ordner in .ssh/authorized_keys befindet sich die öffentlichen Schlüssel anhängt:ansible Textbuch öffentliche Schlüssel Ausgabe

- hosts: default 

vars: 
    user: user1 

tasks: 
- name: Set up authorized_keys for the user 
    authorized_key: user={{ user }} key="{{ item }}" 
    with_fileglob: 
    - public_keys/*.pub 

wenn ich es auf ansible führen Sie es diesen Fehler gibt mir und ich bin ziemlich viel mit ihm stecken:

TASK [Set up authorized_keys for the user] ************************ 
failed: [default] => (item=/Users/trax/Git/ansible-keys/public_keys/test.pub) => {"failed": true, "item": "/Users/trax/Git/ansible-keys/public_keys/test.pub", "msg": "invalid key specified: /Users/trax/Git/ansible-keys/public_keys/test.pub"} 

Die öffentlichen Schlüssel-Datei ist vollkommen gültig, wie ich es derzeit bin mit und es funktioniert perfekt. Es hat keine Kommentare in es, ich will es eigentlich hier einfügen, damit Sie es sehen können:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4e+RLnQAqo3azuFzbynD9n6L7Qc2NjEwNLQRqKOd17532rHAhGOxz9ZV7ca5J6y9Z8QyV2EP9oXXpXd7I9oG1ybiU2cOmMQ7mIMFnMgy90dgVmF4X4Rj3fPch271TIQhvBH36L1eagk98Tlj32zepHNmC7ECFiAUihxXsuGAcFK4l9Y3s0HZe913E1ewUxXjUZAaqmzEQwW621hWDDTU1zUCnPPqEe6DFy6PUP8YL8mLbbKuSL2W6bD7rzm1axZANvoYeD5egvzwSMeZ8f+XF3MbuyhiJhGEFjwDfDkibP4bwQqZm5IdI1c0Ot2X67OHFsHx04gbs6ZzBkD39Z6Jr [email protected] 

Jede beraten? Vielen Dank im Voraus ...

Antwort

1

Unter der Annahme, die Keyfiles lokal sind mit dem Steuergerät, ist es einfach, ein file lookup zu verwenden, um den Schlüssel Inhalt zu erhalten, zum Beispiel:

- hosts: default 
    tasks: 
    - authorized_key: 
     user: '{{ user }}' 
     key: '{{ lookup('file', item) }}' 
    with_fileglob: public_keys/*.pub 
1

Das Argument der key Parameter muss ein Schlüssel sein (kein Pfad zur Datei, aber der tatsächliche Inhalt) oder ein url. Aus der Dokumentation:

key Der öffentliche SSH-Schlüssel (s), als String oder (seit 1.9) url (https://github.com/username.keys)

So können Sie eine Aufgabe hinzufügen, die Schlüssel in einen registrierten lesen Variable und dann über die Schleife die Schlüssel zu installieren:

- hosts: all 
    tasks: 
    - name: read keys 

     # This needs to run on localhost, because that's where 
     # the keys are stored. 
     delegate_to: localhost 

     command: cat {{item}} 

     # Register the results of this task in a variable called 
     # "keys" 
     register: keys 

     with_fileglob: 
     - "public-keys/*.pub" 

    - name: show what was stored in the keys variable 
     debug: 
     var: keys 

    - authorized_key: 
     user: fedora 
     key: "{{item.stdout}}" 
     with_items: "{{keys.results}}" 

die Ansible documentation on using register with loops für Details.

Verwandte Themen