ansible: 1 host több csoport tagja

Fórumok

Sziasztok

Ansible-ben a hosts fájlban felsorolom, hogy milyen hostjaim vannak, pl. debian, web, mail, ezek alá beteszem a konkrét hostokat. Ha egy host mindhárom csoport tagja, akkor mindhárom csoport alá.

Én szeretném a hostjaimat valahogy flagekkel, csoportnevekkel könnyedén rendezni.

Pl. adott egy tűzfal rule, ahol a template fájlban feltételhez kötöm:

{% if inventory_hostname in groups['NS'] %}
iptables -A INPUT -i eth0 -p tcp -m tcp -m state --state NEW --dport 53 -j ACCEPT # NS
iptables -A INPUT -i eth0 -p udp -m udp -m state --state NEW --dport 53 -j ACCEPT # NS
{% endif %}
 

Akkor a nagy iptables.sh-ban megjelenik ez a sor, egyébként a többieknél nem.
Ha viszont ugyanez a host tartozik egy mail csoportba is, akkor nyissa ki az ahhoz tartozó portokat.

De ne kelljen már nekem ugyanazt a hostot beletenni a debian, az ns, a postfix, stb csoportba és több száz host esetén minden csoportban ellenőrizni, hogy mindenki benne van-e.  Nehezen átlátható, hosszú fájl lesz, hibázási lehetőség, szeretném elkerülni.

Szeretném összesen 1x látni az adott hostnevet az inventoryban, nem többször.
Milyen kulturált megoldás van erre?

Hozzászólások

Nem egeszen ertelek, minden host csak egyszer szerepeljen, de minden hostra lehessen barmit konfigolni? Nem ellentmondas ez? Nem lehetne a hostokat igazi (egymast kizaro) csoportokra osztani? Az, hogy "debian", "web", "mail" inkabb role-nak hangzik.... Irj mar par peldat, hogy milyen hostjaid es milyen csoportjaid vannak...

Szerkesztve: 2019. 12. 04., sze – 17:27

Inventoryban lehet változókat megadni hostokhoz és groupokhoz is. Felsorolhatod, hogy az adott hoston milyen portokat akarsz nyitva látni, és használhatod azt a templateből, vagy csinálhatsz flag jellegű változókat (pl fw_service_ns = true), és nézheted azt a templatedben. Ez kb ugyanaz, mint amit most csinálsz, de lehet, hogy a másik jobban kézre állna, pl mert group szinten tudnál default bekapcsolni ilyet, ha kell.

Az hogy debian, melyik verzio stb pl kiderul ansible fact-ekbol is automatan, nem kell letarolnod.

Megadhatsz hostokhoz es csoportokhoz is valtozokat. Illetve lehet csoportoknak children-je is, pl

[dnscluster1]

ns[1:2]   dns_tcp_access_enabled=true

 

[dnscluster2]

ns[3:7]

ns9

 

[dnscluster3]

ns42

 

[dnsclusters:children]

dnscluster[1:3]

 

[dnscluster2:vars]

dns_udp_ratelimit=1000

 

Hasznalhatod csoport neveket feltetelekben vagy valtozokat is, hogy van-e vagy mi az, ahogy ertekuket is felhasznalhatod pl iptables szabalynal.