2016-04-27 6 views
0

Я получил этот основной сборник пьес, который присоединяет все открытые ключи, расположенные в папке public_keys в папку пользователя в .ssh/authorized_keys:анзибль PlayBook открытые ключи выдают

- 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 

когда я запустить его на анзибль это дает мне эту ошибку, и я довольно много застрял с ним:

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"} 

файл открытого ключа вполне допустимо, поскольку я в настоящее время использую его, и он прекрасно работает. Он не имеет никаких замечаний по нему, я на самом деле вставить его здесь, так что вы можете увидеть:

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

Любой посоветуете? Большое спасибо заранее ...

ответ

1

Если предположить, что ключевые файлы являются локальными для управления машиной, легко использовать file lookup, чтобы получить ключ содержания, например:

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

Аргумент параметра key должен быть ключ (не путь к файлу, но фактические содержание) или URL. Из документации:

key Открытый ключ SSH (s), как строка или (с 1.9) URL (https://github.com/username.keys)

Таким образом, вы можете добавить задачу, которая будет считывать ключи в зарегистрированный переменный, а затем перебирает, что для установки ключей:

- 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}}" 

Ansible documentation on using register with loops Смотрите для деталей.

Смежные вопросы