Hvordan man utilsigtet skriver et Web-GUI til Haproxy

Den moderne verden af systemadministratorer har forkælet os med smukke web-grinterfaces, så man endda ikke gider at installere software, der ikke har netop dette 'gui' (jeg føler, at de troende programmører nu vil kaste sten), men hvem vil hele tiden logge ind via kommandolinjen, ikke sandt? Alt ville være fint, hvis man blot kunne installere, konfigurere og glemme softwaren, men hvad gør man, når man skal ind flere gange, redigere, og selvfølgelig er der ikke nogen log over alle handlinger, skal man virkelig skrive cp cfg cfg_back hver gang, med tiden bliver man forvirret og holder op med det.

Hvordan man utilsigtet skriver et Web-GUI til Haproxy

For mange år siden stiftede jeg bekendtskab med en vidunderlig balancer, Haproxy. Alt var skønt og flot. Jeg fik mange af dem, og jeg begyndte at lede efter en GUI til det, men til min overraskelse fandtes der ikke nogen. Meget populær software, og desuden temmelig gammel, men nå ja, tænkte jeg og fortsatte lejlighedsvis med at redigere manuelt i mit elskede vi og have en masse åbne faner med statistik om alle aktive forbindelser. servere. Men tiden kom, hvor jeg måtte imødekomme folks ønsker, der havde skrevet software til at arbejde via http, og her begyndte det interessante...

Hænderne kriblede, øjnene lyste, og jeg gik i gang. Mere præcist begyndte jeg at tænke over, hvad jeg skulle skrive i, jeg mindedes den længe glemte PHP, som jeg ikke rigtig havde lyst til, og det forekom mig, at det ikke var helt passende til denne opgave. I sidste ende blev valget Python, det ville helt sikkert komme til nytte i fremtiden, tænkte jeg, og det begyndte at suge information til mig.

I starten var opgaverne ikke så vanskelige: mulighed for at redigere konfigurationer fra webinterfacet fra et enkelt indgangspunkt, gemme tidligere versioner af konfigurationerne. Denne, ikke særlig store funktionalitet, blev implementeret ret hurtigt, men så dukkede der op i mig enten administratorlaziness eller den berygtede perfektionisme, og det føltes selvfølgelig ikke tilstrækkeligt for mig. Og så begyndte der at komme funktioner som: sammenligning af to konfigurationer, logning af alle handlinger relateret til konfigurationerne, Runtime API og tilføjelse af sektioner gennem web.

Hvordan man utilsigtet skriver et Web-GUI til Haproxy

Og som en ordentlig UNIX-administrator, der lever af open source-software, besluttede jeg at dele mine erfaringer med verden. Måske vil nogen finde dem nyttige? Men for at gøre det, måtte alt gøres, så man ikke skulle roder med koden, men kun med konfigurationen (I dag er de fleste indstillinger flyttet til databasen. Efter min mening er det blevet mere bekvemt at redigere dem, og ved opdateringer opstår der ikke fejl på grund af manglende parametre i konfigurationen).

En måned senere lagde jeg mit projekt op på GitHub uden at forvente noget særligt. Men det var en fejl; softwaren viste sig at være eftertragtet, og her begyndte det interessante… Den aktive udvikling har snart været i gang i næsten et år. Nogle gange har jeg lyst til at give op, fordi mine behov længe har været dækket. Men hvorfor har jeg brug for muligheden for at sætte et 'cluster' op med keepalived og HAProxy via en webgrænseflade, når det kun tager mig et par minutter? Men det viser sig, at folk har behov for det, og jeg har også noget at lave. Selvfølgelig er der også nødvendige funktioner for mig, som monitoring af backend-servere, for at se om de er tilgængelige for HAProxy. Vi har naturligvis en virksomhedsmonitorering, men der sidder folk, der kan tage ret lang tid om at reagere, og da min afdeling beskæftiger sig med udvikling, forsvinder software tit, og det tager tid at navigere i bureaukratiet.

Hvordan man utilsigtet skriver et Web-GUI til Haproxy

I det hele taget besluttede jeg at dele det, for det ser ud til, at det er den eneste gratis GUI. Hvad nu hvis nogen får glæde af det? Link til GitHub.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster