Sziasztok!
Olyanra lenne szuksegem, hogy tudjak olyan dinamikus csoportokat generalni amiknel szinten olyan valtozok vannak megadva mint az adott host-nal amin fut a playbook.
Konkretabban pl
hostA var1=piros var2=sarga
hostB var1=piros var2=kek
hostC var1=kek var2=sarga
es ha futtatok egy playbook-ot pl gyujt-piros-ssh-kulcsok.yaml -l hostA, ami annyi lenne hogy ugyanolyan hostok-rol ahol var1 egyezik azzal ami a futtatott hoston be van allitva (hostA), onnan peldaul gyujtse be ssh kulcsokat.
Kinek milyen otlete lenne erre, ami akkor is lefut ha meg van adva hogy playbook csak megadott hoston fusson le es nem playbook-ban adom meg hogy adott taskot futtassa le osszes host-ra pl group_by -al?
Mert igy probalnam
group_by: key="gen_group_{{ hostvars[item]['var1'] }}"
with_items: "{{ groups['all'] }}"
de group-ban csak elso hoston fut le, csak az a group generalodik le ami abban van
vagy probalnam ugyanilyen logika menten delegate-el
debug: msg="{{ hostvars[item]['var1'] }}"
delegate_to: "{{ item }}"
delegate_facts: true
with_items: "{{ groups['all'] }}"
de delegate_facts mintha nem mukodne, mindegyik host-hoz ugyanazt a valtozot mutatja ami elsoben
Barkinek egyeb otlet vagy masfajta megkozelites?
- 1077 megtekintés
Hozzászólások
Én 5x nekikezdtem, hogy mit is akarsz, de még mindig nem értem, lehet, hogy hétfő van, de szerintem ha ennyire elbonyolítod, akkor valami az eredeti problémafelvetés is bajos.
Kezdem érteni (talán): szóval te a hostA-n group_vars/piros-ból akarod szedni a dolgokat, hostC meg group_vars/kek-ből?
Én ezeket csinálnám:
1. Csoportosítsd az inventoryban a hostokat, ezzel automatikusan megkapod a group_vars/inv_group változóit. Egy host több groupban is lehet.
2. Csinálj egy dict-et, amiben a kulcs a var1
pl.:
azenvaltozom:
piros:
alma: 1
korte: 2
kek:
alma: 10
korte: 25
{{ azenvaltozom[var1] }}
- A hozzászóláshoz be kell jelentkezni
Nem egeszen, nem az a valtozok neve hogy piros vagy kek, az az erteke.
Hostokhoz (group-okhoz valojaban, csak egyszerusitettem a mennyisegen) rendelek tobb valtozot peldaul olyan nevekkel hogy var1, var2, var3 stb.
peldaban legyen:
hostA-nal var1 valtozo erteke piros, var2 erteke sarga, var3 erteke hideg, var4 erteke alma
hostB-nel var1 erteke piros, var2 erteke kek, var3 erteke meleg, var4 erteke alma
hostC-nel var1 erteke kek, var2 erteke sarga, var3 erteke meleg, var4 erteke korte
hostD-nel var1 valtozo erteke piros, var2 erteke zold, var3 erteke hideg, var4 erteke szilva
Ha en hostA-ra futtatok egy playbook-ot akkor peldaul szeretnem tudni melyik hostoknal ugyanaz a var1 valtozo erteke (ami hostA eseten a piros), illetve masik task eseten melyik hostoknal szinten egyezik a var2 erteke (ami hostA eseten sarga), mert vannak olyan taskok peldaul ssh kulcsok begyujtese, amit nem csak azon a hoston kell futtatnom amin a playbook-ot futtatom, hanem azokon is amik ugyanolyan tipusuak.
lehetne azt hogy kezzel inventory-ba felveszem az osszes lehetoseget group-kent es akkor csak kivalasztom hogy hosts-piros group tagjainak delegalom a feladatot.
De ezt szeretnem elkerulni, mert annyi fele group lesz hogy konnyen idovel kimarad egyikbol valamelyik host, ezert gondoltam a hostoknal (valojaban host group-oknal) adom meg valtozoval hogy o milyen tipusokba tartozik bele (group-ok level joval kevesebbszer kell megadni es atlathatobb is) , csak utana kellene nekem az hogy ossze tudjam szedni melyik hostokra jellemzo hogy ugyanolyan tipusuak (ahol peldanal maradva bar keves hozza a felsorolt pelda, de ugyanaz a hosthoz tartozo var1 erteke es var3 erteke, de var2 es var4 elterhet ; masik tasknal ugyanaz a var3 es var4 erteke de var1, var2 elterhet).
- A hozzászóláshoz be kell jelentkezni
Akkor írj inkább egy dinamikus inventory scriptet, amiben a csoportosítás igazodik az általad elképzelt dolgokhoz.
Pl.:
host1:
groups:
-piros
-sarga
vars:
alma: 1
korte: 2
host2:
groups:
-kek
-sarga
[code]
Ebből generálnád az ansiblenek megfelelő jsont:
[code]
inventory.py --list
{
"piros": [
"host1"
],
"sarga": [
"host1",
"host2"
],
"kek": [
"host2"
]
}
inventory.py --host host1
{
"alma":1,
"korte":2
}
És akkor ansible-playbook -i inventory.py ...
- A hozzászóláshoz be kell jelentkezni