Используя ansible для добавления открытых ключей пользователей к authorized_keys файлу одного пользователя

Попытка добавить открытые ключи 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. Понятно, но я вне идей. Кто-либо?

3
задан 6 February 2015 в 01:00
3 ответа

OK, ek het 'n paar aanpassings op u speelboek gemaak, en hier is die hersiene weergawe

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

Sommige veranderinge let op:

  • Op die author_key -module is die sleutel verander na item.stdout . Die stdout was 'n publieke sleutel wat u benodig.
  • Op die author_key -module het ek ignore_errors gedefinieer: ja om die uitvoering van die speelboek te hervat wanneer die krul-taak nie kon haal nie, internetprobleem of 404 Nie gevind nie (soos die sleutel van tmessins). Natuurlik kan u dit aanpas deur te beheer wat defensie definieer , sodat dit steeds misluk het toe ander foute plaasgevind het.
6
ответ дан 3 December 2019 в 04:46

Начиная с Допускаемого 1.9, значение для ключа может быть url, что избавляет от необходимости скручивать url через модуль shell.

Пример:

- name: Add my SSH key
  authorized_key: user=jeffwidman key=https://github.com/jeffwidman.keys
6
ответ дан 3 December 2019 в 04:46

Теперь это действительно просто:

- name: get github key(s) and update the authorized_keys file
  authorized_key:
    user: "{{ username }}"
    key: "https://github.com/{{ username }}.keys"

для получения подробной информации, проверьте эту роль github

0
ответ дан 3 December 2019 в 04:46

Теги

Похожие вопросы