ansible kompozíciós kérdés

Fórumok

Hi,

Hogyan raknád össze egy revproxy konfigját ansible-vel?
Van 1 db revproxy aki több belső konténeren (belső ip-n) figyelő alkalmazást proxyzik kifelé.
A belső konténereken is fut ansible
Berakhatom ezeket a gépeket a [proxyzando] csoportba.
Aztán?

Hozzászólások

Én az alábbi modulokkal próbálkoznék:
Template, lineinfile, blockinfile

Template-nél mondjuk nem tudom, hogy megoldható-e dimamikus mennyiségű sor.

Esetleg egy string/változó létrehozása with_items segítségével, és azt betolni template-be.

Miért akarsz Ansible-t indítani a konténerben? Meg egyáltalán kismillió gépről használni? Egy gépről használd az Ansible-t, amin megvan az inventory a konténerek adataival (ez lehet dinamikus is). Az meg bemegy ssh-val a revproxy gépre, és lerakja a konfigokat, újratölti az Apacheot, stb. Vagy már így csinálod, csak mondjuk azt akarod, hogy végigmenjen egy csoporton belül a gépeken, de nem magán a proxyzandó gépen ügyködjön? Akkor meg a delegate_to.

gondolom a belső konténerek nem maguktól jönnek létre. Az a külső vezérlő aki létrehozza, az a visszakapott paraméterek (ip, port) alapján módosítsa a revproxy kívülről (!) beadott konfigját és rúgjon bele hogy olvassa fel.

kulcsszavak:
- getfacts:
1. Ha a playbookban benne vannak, akkor hozzafersz a groups[''] alapjan es vegigmesz rajtuk akarmelyik lepesben, akar egy masik host eseten is (loop-ot lasd kesobb)
2. Irsz egy "getfacts" reszt ahol leszeded az ipjuket. Mondjuk ha ezek containerek, amiknek a neveben benne van a backend akkor docker inspest es kesz
2.1 regisztralod a kimenetet
2.2 set_facts (itt celszeru egy dict-et csinalnod ip+backend name)
3. Amikor az egyes backendeket futtatod letrehozod a proxy configot es bemaosolod a frontend includes/whatever konyvtaraba
3.1. Ehhez szinten hasznalod mindegyikben a getfacts-odat csak a frontendre
3.2. A backend-ben meg ugyis kicserelted a teplateben a megfelelo ip-re (aktualis)
3.3. A template modul generalasanal hasznalod a delegate_to-t a frontend cimevel

- template:
Jinja template-ben tudod hasznalni mind az 1 mind pedig a kettes pontot
1. Mivel a groups[''] itt is elerheto hasznalaod a loopban
2. Mivel set_fact-oltal itt is elered a variablet, amibe beleraktad (backend_ips+backend_name) es legeneralod a konfigokat a forintendben
3. Mivel az osszes konfig benne van mar az includes/whateverben csak egy include bejegyzes kell a main konfigban

Hiretelen ennyi megoldas jutott eszembe, de most meg tobb eszembe jutott :D
Whuuuhuuhhuuu...a lehetosegek tarhaza vegtelen :D

Tengernyi okosság van a válaszokban, köszönöm!
--
Gábriel Ákos