Попытка добавить открытые ключи Github двух пользователей в файл авторизованных пользователей. Я могу успешно получить ключи SSH:
---
- hosts: 127.0.0.1
connection: local
vars:
my_users:
belminf: "belminf"
bob: "tmessins"
tasks:
- name: Retrieving all keys from GitHub
shell: /usr/bin/curl https://github.com/{{ item.value }}.keys 2> /dev/null
register: ssh_keys
with_dict: my_users
- debug: var=ssh_keys
Однако я не уверен, как пройти через ssh_keys
результаты и использование authorized_keys
задача добавить полученные ключи.
Моя нелепая попытка:
- name: Adding keys to authorized_keys
authorized_key: user=belminf key="{{ item }}" path=/home/belminf/test_auth state=present
with_items: ssh_keys.results
Результаты в invalid key specified
. Понятно, но у меня нет идей. Кто угодно?
Начиная с Ansible 1.9, значение для key
может быть URL-адресом, что избавляет от необходимости свертывать URL-адрес с помощью shell
модуль.
Пример:
- name: Add my SSH key
authorized_key: user=jeffwidman key=https://github.com/jeffwidman.keys
Хорошо, я немного подправил ваш playbook, и вот исправленная версия
---
- hosts: 127.0.0.1
connection: local
vars:
my_users:
belminf: "belminf"
bob: "tmessins"
tasks:
- name: Retrieving all keys from GitHub
shell: /usr/bin/curl https://github.com/{{ item.value }}.keys 2> /dev/null
register: ssh_keys
with_dict: my_users
- name: Adding keys to authorized_keys
authorized_key: user=belminf key="{{ item.stdout }}" path=/home/belminf/test_auth state=present
with_items: ssh_keys.results
ignore_errors: yes
Обратите внимание на некоторые изменения:
authorized_key
модуль, ключ был изменен на item.stdout
. Стандартный вывод - это открытый ключ, который вам нужен.authorized_key
модуль, я определил ignore_errors: yes
чтобы возобновить выполнение playbook всякий раз, когда ваша задача curl не может быть получена, либо проблема с Интернетом, либо 404 Not found (например, ключ tmessins). Конечно, вы можете настроить это контроль того, что определяет отказ поэтому он все равно не удался, когда произошла другая ошибка.Теперь это действительно просто:
- name: get github key(s) and update the authorized_keys file
authorized_key:
user: "{{ username }}"
key: "https://github.com/{{ username }}.keys"
для подробностей, проверьте этот github роль