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.
apache alá ugye a sites-available -be külön file-okba pakolnám bele az egyes proxyzandó containerek dolgait.
átfogalmazva a kérdést hogyan "dobja fel" egy proxyzandó container a saját dolgait a proxy gépbe.
--
Gábriel Ákos
mármint a containerben futó playbookból szeretnél konfigot kitolni a hostra?
hát vagy ssh a hostra, vagy ha kint indul a playbook, akkor delegate_to, esetleg volume megosztás a host és guest között.
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.
+1
már az sem oké hogy interaktív shell és ssh van a konténerekben.
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