Estou tentando criar um conjunto de chaves SSH autorizadas para um conjunto de usuários no Ansible. Eu tenho uma users
variável configurada assim:
users:
- { username: root, name: 'root' }
- { username: user, name: 'User' }
Na mesma função, também tenho um conjunto de arquivos de chave autorizados em um files/public_keys
diretório, um arquivo por chave autorizada:
roles/common/files/public_keys/home
roles/common/files/public_keys/work
Eu quero copiar cada chave pública para cada usuário.
Eu tentei usar a seguinte tarefa:
- name: copy authorized keys
authorized_key: user={{ item.0.username }} key={{ item.1 }}
with_nested:
- users
- lookup('fileglob', 'public_keys/*')
No entanto, item.1
contém a cadeia literal "lookup('fileglob', 'public_keys/*')"
, não cada caminho de arquivo abaixo files/public_keys
.
Existe uma maneira de obter uma lista do files/public_keys
diretório e copiar cada chave pública para cada usuário?
Pode ser necessário reescrever seu comando de forma significativa, mas há provisões para fazer um loop sobre os filtros de arquivos
do exemplo:
Outras opções promissoras são Looping over Subelements, que é realmente ilustrado pelas teclas SSH
fonte
with_fileglob
; Só não sei como usá-lo em conjunto com um loop aninhado. Fazer um loop sobre subelementos pode funcionar, mas espero não precisar especificar manualmente toda a lista de chaves que quero copiar, já que eu deveria conseguir isso como uma lista (usandowith_fileglob
).#ansible
onirc.freenode.net
e ver se os gurus não tem nenhum idéias brilhantes.