J'essaie de créer un ensemble de clés SSH autorisées pour un ensemble d'utilisateurs dans Ansible. J'ai une users
variable configurée comme ceci:
users:
- { username: root, name: 'root' }
- { username: user, name: 'User' }
Dans le même rôle, j'ai également un ensemble de fichiers de clés autorisés dans un files/public_keys
répertoire, un fichier par clé autorisée:
roles/common/files/public_keys/home
roles/common/files/public_keys/work
Je veux copier chaque clé publique pour chaque utilisateur.
J'ai essayé d'utiliser la tâche suivante:
- name: copy authorized keys
authorized_key: user={{ item.0.username }} key={{ item.1 }}
with_nested:
- users
- lookup('fileglob', 'public_keys/*')
Cependant, item.1
contient la chaîne littérale "lookup('fileglob', 'public_keys/*')"
, pas chaque chemin de fichier sous files/public_keys
.
Existe-t-il un moyen d'obtenir une liste du files/public_keys
répertoire et de copier chaque clé publique pour chaque utilisateur?
Vous devrez peut-être réécrire considérablement votre commande, mais il est possible de boucler sur les fichiers
de l'exemple:
D'autres options prometteuses sont la boucle sur les sous-éléments, qui est en fait illustrée par les clés SSH
la source
with_fileglob
; Je ne sais juste pas comment utiliser cela en conjonction avec une boucle imbriquée. La boucle sur les sous - éléments pourrait fonctionner, mais j'espère que je n'aurai pas à spécifier manuellement la liste complète des clés que je veux copier, car je devrais simplement pouvoir l'obtenir sous forme de liste (en utilisantwith_fileglob
).#ansible
leirc.freenode.net
et voir si les gourous là - bas ont des idées brillantes.