Вопрос:
Используя Ansible, как настроить несколько файлов открытого ключа (.pub
) для развертывания в файле authorized_keys
пользователя вместо использования одного файласодержащий список открытых ssh-ключей?
Сценарий и требования:
- У меня есть несколько открытых ssh-ключей, сохраненных в виде
.pub
файловв центральном расположении - Я хочу создать новых пользователей из
vars
файла - , каждый пользователь должен иметь (нет / один конкретный / несколько) открытых ssh-ключей из набора
.pub
файлы, развернутые в соответствующие файлы authorized_keys
- список развернутых файлов
.pub
может измениться из-за: - содержимое файла
.pub
изменилось в связи, например, с. скомпрометированный закрытый ключ - пользователю в файле
vars
должны быть назначены дополнительные файлы открытого ключа
- Я не хочу просматривать файл "списка" для каждого пользователязаменить ключ
В настоящее время развернуто:
vars-file (vars/users.yml
):
users:
- username: "bob"
sshkey: "{{ lookup('file', 'files/ssh_keys/bob.keys') }}"
...
- username: "alice"
sshkey: "{{ lookup('file', 'files/ssh_keys/alice.keys') }}"
...
содержимоеbob.keys
:
ssh-rsa admin-ssh-key= admin
ssh-rsa support-a-ssh-key= support-a
ssh-rsa bobs-ssh-key= hi im bob
содержимое alice.keys
:
ssh-rsa admin-ssh-key= admin
ssh-rsa alice-ssh-key= hi im alice
ssh-rsa accounting-clerk-ssh-key= checking your progress
Ответственная роль Файл main.yml:
- name: Add SSH keys
authorized_key:
user: "{{ item.username }}"
state: "{{ item.sshkeystate }}"
key: "{{ item.sshkey }}"
exclusive: yes
with_items: "{{ users }}"
tags: [add ssh keys]
Сценарий проблемы:
support-a
ssh-ключ скомпрометирован, и все пользователи, имеющие этот открытый ключ в своем файле authorized_keys
, должны быть заменены новым открытым ключом - Мне нужно (
sed
) просмотреть все keys
файлы и заменить скомпрометированный открытый ключ новым
Я пытался:
vars-file:
users:
- username: "bob"
sshkey:
- "{{ lookup('file', 'files/ssh_keys/admin.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/support_a.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/bob.pub') }}"
...
- username: "alice"
sshkey:
- "{{ lookup('file', 'files/ssh_keys/admin.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/alice.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/accounting_clerk.pub') }}"
Тем не менее, я получаю эту ошибку при выполнении ANSIBLE роли: "msg": "invalid key specified: ['ssh-rsa admin-ssh-key= admin', 'ssh-rsa support-a-ssh-key= support-a', 'ssh-rsa bobs-ssh-key= hi im bob']"
Я также пробовал что-то вроде этого (https://stackoverflow.com/a/54079374) решение, но я думаю,Сценарий и требования немного отличаются, и в моем сценарии нет ничего общего с selectattr()
(я думаю).
Может кто-нибудь указать мне, как решить эту проблему, или я иду в совершенно неправильном направлении? ? Приветствия.