Estoy tratando de crear un conjunto de claves SSH autorizadas para un conjunto de usuarios en Ansible. Tengo una users
variable configurada así:
users:
- { username: root, name: 'root' }
- { username: user, name: 'User' }
En el mismo rol, también tengo un conjunto de archivos de clave autorizados en un files/public_keys
directorio, un archivo por clave autorizada:
roles/common/files/public_keys/home
roles/common/files/public_keys/work
Quiero copiar cada clave pública a cada usuario.
He intentado usar la siguiente tarea:
- name: copy authorized keys
authorized_key: user={{ item.0.username }} key={{ item.1 }}
with_nested:
- users
- lookup('fileglob', 'public_keys/*')
Sin embargo, item.1
contiene la cadena literal "lookup('fileglob', 'public_keys/*')"
, no cada ruta de archivo debajo files/public_keys
.
¿Hay alguna manera de obtener una lista del files/public_keys
directorio y copiar cada clave pública a cada usuario?
Es posible que tenga que reescribir significativamente su comando, pero existe la posibilidad de bucle sobre los globos de archivos
del ejemplo:
Otras opciones prometedoras son los bucles sobre subelementos, que en realidad se ilustran con las claves SSH
fuente
with_fileglob
; No estoy seguro de cómo usar eso junto con un bucle anidado. El bucle sobre subelementos podría funcionar, pero espero no tener que especificar manualmente la lista completa de claves que quiero copiar, ya que debería poder obtener eso como una lista (usandowith_fileglob
).#ansible
elirc.freenode.net
y ver si los gurús no tienen alguna idea brillante.