ssh-keys

Hi,

In my setup, I have a master host that contains all accounts, these accounts are to be kept in sync across a bunch of isolated remote environments.
The account creation/deletion is not a problem, however I can’t seem to find out a way to deploy the ssh key for each user without having to write a separate statement for each account.

What I’d like to do is:

authorized_key: user={{ item }} key={{ lookup(‘file’, public-keys/{{ item.1 }}.pub) }}
with_items:
-list_of_my_users_obtained_earlier

Sadly this doesn’t work (can’t figure out why it doesn’t either, no error is given).
Is there another way of doing this?

Thanks,
Nico

I am not sure what list_of_my_users_obtained_earlier looks like, but assuming it is just a normal list of just usernames, you probably want something like:

authorized_key: user=“{{ item }}” key=“{{ lookup(‘file’, ‘public-keys/’ + item + ‘.pub’) }}”
with_items: list_of_my_users_obtained_earlier

I noticed several syntax issues. Such as using {{ }} inside of other {{ }}, which is not needed or allowed. Missing quotes around your path in the lookup. A missing space between ‘-’ and ‘list_of_my_users_obtained_earlier’, which is not actually needed, you can just give the list on the same line was with_items. You were using ‘item’ in one place, but ‘item.1’ in another.

Hi Matt,

I’m aware of the syntax issues; I quickly wrote those two lines from the back of my head without verifying their syntax; sloppy really.
What I didn’t know though was the way you concatenated the strings; should have known though, it’s python after all.

Anyway, thanks the provided solution helped me to implement what I wanted.