Установить несколько авторизованных ключей для нескольких пользователей на одном хосте в playbook - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю пользователей на удаленном хосте:

 - name: Add Existing Users to Server
  user:
    name: "{{ item }}"
    groups: admin, prog
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa
  register: result
  with_items:
    - user1
    - user2
    - user3
    - user4
    - user5
    - user6
    - user7
- debug:
    msg: "{{ result.results | map(attribute='ssh_public_key') | list }}"

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

ok: [192.168.blah.blah] => {
    "msg": [
        "ssh-rsa blahblahblahblahblahblah ansible-generated on TEST",
        "ssh-rsa blahblahblahblahblahblah ansible-generated on TEST",
        "same thing for rest of users....."
    ]
}

Проблема в том, что я не знаю, как получить доступ к этому позже в следующей задаче.Вот задача генерации ключа:

- name: Set authorized keys for users
  authorized_key:
    user: "{{ item }}"
    state: present
    key: #Need to access that generated list here, but how? 
  with_items:
    - user1
    - user2
    - user3
    - user4
    - user5
    - user6
    - user7

Можно ли это сделать с циклами в ansible?

1 Ответ

0 голосов
/ 13 февраля 2019

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

Прежний код:

- name: Set authorized keys for users
authorized_key:
  user: "{{ item }}"
  state: present
  key: #Need to access that generated list here, but how? 
with_items:
  - user1
  - user2
  - user3
  - user4
  - user5
  - user6
  - user7

Рабочийкод

- name: Set authorized keys for users
authorized_key:
  user: "{{ item.name }}" #Grabs the username from each object
  state: present
  key: "{{ item.ssh_public_key }}" #Grabs the ssh key from each object
loop: "{{ result.results | list }}" #Loops over the object array

Это правильно генерирует файл авторизованного ключа для каждого пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...