Jak przypadkowo napisać Web-GUI dla Haproxy

Współczesny świat administratorów systemów przyzwyczaił nas do pięknych interfejsów webowych, że nawet nie chce się instalować oprogramowania, które nie ma tego „GUI” (czuję, że teraz posypią się gromy od prawowiernych pisarzy), no ale nie będziemy przecież ciągle grzebać w wierszu poleceń, prawda? Wszystko byłoby w porządku, gdyby oprogramowanie można było zainstalować, skonfigurować i zapomnieć, ale co zrobić, gdy trzeba tam ciągle grzebać, poprawiać, a oczywiście log wszystkich działań nie istnieje, przecież nie będę co chwilę pisał cp cfg cfg_back, z czasem się zgubię i zrezygnuję z tego.

Jak przypadkowo napisać Web-GUI dla Haproxy

Wiele lat temu poznałem wspaniały balansujący software, jakim jest Haproxy. Wszystko wspaniale i pięknie. Miałem ich już wiele i zaczęło mi brakować GUI do niego, ale ku mojemu zdziwieniu nie było. Bardzo popularny soft, do tego wystarczająco stary, ale dobrze, pomyślałem i dalej od czasu do czasu edytowałem ręcznie w moim ulubionym vi, mając otwartą masę zakładek ze statystyką wszystkich aktywnych. serwerów. Ale nadszedł czas, gdy musiałem spełnić „chcice” ludzi, którzy pisali oprogramowanie do pracy przez http, tutaj zaczęła się interesująca historia…

Ręce zabolały, oczy zabłysły i przystąpiłem do działania. A właściwie zacząłem myśleć, w czym pisać, przypominając sobie dawno zapomniany PHP, jakoś mi się nie chciało, a także wydawało się, że to niezupełnie nadaje się do tej pracy. Ostatecznie wybór padł na Pythona, pomyślałem, że na przyszłość na pewno się przyda i zaczęło się wchłanianie informacji.

Na początku zadania nie były aż tak skomplikowane: możliwość edytowania konfiguracji z interfejsu webowego z jednego punktu dostępu, zapisywanie wcześniejszych wersji konfiguracji. Ten, niezbyt duży funkcjonalność udało się zrealizować dość szybko, ale tutaj we mnie obudziła się to chyba adminowska leniwe pęd do perfekcjonizmu i wydało mi się to oczywiście za mało. I tutaj zaczęły pojawiać się takie funkcje, jak: porównywanie dwóch konfiguracji, logowanie wszystkich działań związanych z konfiguracjami, API w czasie rzeczywistym i dodawanie sekcji przez web.

Jak przypadkowo napisać Web-GUI dla Haproxy

I jako porządny administrator UNIX, żyjący dzięki wolnemu oprogramowaniu, postanowiłem podzielić się tym ze światem, a nuż komuś się przyda? Ale do tego musiałem wszystko tak zrobić, aby nie trzeba było grzebać w kodzie, ale maksimum w konfiguracji aplikacji (Obecnie większość ustawień przeszła do bazy danych. Uważam, że stało się to wygodniejsze do edytowania, a przy aktualizacji nie będą błędów z powodu braku jakiegokolwiek parametru w konfiguracji).

Po miesiącu wrzuciłem swoje dzieło na Github, nie licząc na zbyt wiele. A jednak, oprogramowanie okazało się nieco popularne i wtedy zaczęła się najciekawsza część… Aktywne „dopieszczanie” trwa już prawie rok. Czasami mam ochotę to wszystko rzucić, ponieważ moje potrzeby są już dawno zaspokojone. Po co mi możliwość uruchomienia „klastera” z keepalived i HAProxy przez interfejs webowy, skoro zajmuje mi to najwyżej kilka minut? A jednak ludzie tego potrzebują, poza tym mnie to interesuje i jest co robić. Oczywiście są też potrzeby, takie jak monitorowanie serwerów backendowych, aby sprawdzić, czy są dostępne dla Haproxy. Mamy nasze korporacyjne monitorowanie, ale siedzą tam ludzie, którzy mogą dość długo reagować, a mój dział zajmuje się tworzeniem oprogramowania, które pojawia się i znika, więc trudno przebić się przez biurokrację.

Jak przypadkowo napisać Web-GUI dla Haproxy

Wszystko postanowiłem podzielić, ponieważ wychodzi na to, że to jedyny darmowy GUI. A nuż się komuś przyda? Link do GitHub.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster