Fórum Root.cz
Hlavní témata => Server => Téma založeno: czechsys 28. 01. 2020, 16:31:08
-
Ahoj,
resim tu takovou vec kolem vytvareni uzivatelu. Kdybych ty uzivatele mel definovane v host_vars/fqdn, tak je to brnkacka. Ale nez na tu variantu prejdu (je dost komplikovana), tak hledam jinou cestu.
Predstava je treba takto definovana promenna:
users:
- username: somename
group: somegroup
ssh_key: somekey
ssh_groups:
- server1
- server2
- servergroup1
Pouzivam:
- name: add ssh key
authorized_user:
user: "{{ item.username }}"
state: present
key: "{{ item.ssh_key }}"
with_items:
- "{{ users }}"
when: inventory_hostname in "uzivatelovo ssh_groups"
Pro danou skupinu serveru vytvorim uzivatele. Tech skupin ci serveru, na kterych ten uzivatel je, je ale vice. Chtel bych nejak elegantne omezit, na ktere servery se i zaroven prida klic toho uzivatele. Jak rozumne na to? Nejaky priklad i s jinym typem promenne vcetne iterace?
Diky.
-
řešil jsem něco podobného, dá se napsat vlastní lookup plugin v pythonu
-
Tech skupin ci serveru, na kterych ten uzivatel je, je ale vice.
Skupinou myslis skupinu serveru - group v ansible inventari?
Pokud ne, resenim by mohlo byt:
- name: create user
user:
name: ...
ssh_key_file: ...
delegate_to: "{{ item }}"
loop: "{{ users.ssh_groups }}"
[/code]
-
Uz jsem to vyresil.
users:
- username: "neco"
enabled: true
ssh_key:
- value: "nejaky"
hosts:
- "somehost"
groups:
- "somegroup"
- name: Add ssh key
authorized_key:
user: "{{ item.0.username }}"
state: present
key: "{{ item.1.value }}"
loop: "{{ users|subelements('ssh_key') }}"
when: (item.1.value is defined and item.1.enabled) and ((inventory_hostname in item.1.hosts) or (item.1.groups|intersect(group_names)))
[code]