Come scrivere accidentalmente una Web-GUI per Haproxy

Il mondo moderno degli amministratori di sistema ci ha reso così pigri con bellissime facce web che non vogliamo nemmeno installare software che non abbia proprio questo "ragazzo" (mi sento come se le pietre stessero per volare dalle devote cucitrici) , beh, non è che stai costantemente scalando la linea, giusto? Andrebbe tutto bene se il software fosse installato, configurato e dimenticato, ma cosa fare se è necessario salire costantemente lì, modificare e ovviamente non c'è un registro di tutte le azioni, non scrivere cp cfg cfg_back ogni volta, oltre tempo ti sentirai confuso e dimenticherai questa faccenda.

Come scrivere accidentalmente una Web-GUI per Haproxy

Molti anni fa ho incontrato un bilanciatore meraviglioso come Haproxy. Tutto è meraviglioso e bello. Ne avevo molti e ho pensato di cercare una GUI per questo, ma sorprendentemente non ce n'era una. Un software molto popolare, e anche piuttosto vecchio, ma vabbè, ho pensato e continuato a modificare di tanto in tanto le penne nel mio vi preferito e ad avere un sacco di schede aperte con le statistiche di tutti i server attivi. Ma è arrivato il momento e ho dovuto soddisfare i “desideri” di chi scriveva software che funzionasse tramite http, ed è qui che le cose si sono fatte interessanti…

Mi prudevano le mani, i miei occhi si illuminavano e ho iniziato. Più precisamente, ho iniziato a pensare a cosa scrivere, a ricordare il PHP dimenticato da tempo, in qualche modo non volevo, e sembrava che non fosse del tutto adatto a questa faccenda. Alla fine, la scelta è caduta su Python, tornerà sicuramente utile in futuro, ho pensato, e ho iniziato ad assorbire le informazioni.

All'inizio, i compiti non erano così difficili: la possibilità di modificare le configurazioni dall'interfaccia web da un punto di ingresso, salvando le versioni precedenti delle configurazioni. Questa funzionalità non particolarmente ampia è stata implementata abbastanza rapidamente, ma poi o la pigrizia dell'amministratore o il famigerato perfezionismo hanno preso il sopravvento in me e ovviamente questo non mi è sembrato abbastanza. E poi hanno cominciato ad apparire funzionalità come: confronto di due configurazioni, registrazione di tutte le azioni relative alle configurazioni, API Runtime e aggiunta di sezioni tramite web.

Come scrivere accidentalmente una Web-GUI per Haproxy

E come un rispettabile amministratore UNIX che vive di software libero, ho deciso di condividerlo con il mondo, e forse sarà utile a qualcun altro? Ma per questo era necessario fare tutto in modo tale da non dover entrare nel codice, ma al massimo nei file di configurazione (ora la maggior parte delle impostazioni sono state spostate nel database. Per quanto mi riguarda, ha diventerà più comodo modificarli e non si verificheranno errori durante l'aggiornamento dovuti alla mancanza di qualche parametro).

Un mese dopo, ho pubblicato la mia creazione su Github senza troppe aspettative. Ma invano il software si è rivelato leggermente richiesto e poi è iniziato il divertimento... L'"aggiornamento" attivo va avanti da quasi un anno. A volte c'è il desiderio di mollare tutto, perché... le mie esigenze sono state coperte per molto tempo. Ebbene, perché dovrei avere l'opportunità di implementare un "cluster" con keepalived e HAProxy tramite il web, se mi ci vogliono solo un paio di minuti? Ma si scopre che le persone ne hanno bisogno, e io sono interessato, e c'è qualcosa da fare. Sebbene, ovviamente, ci siano funzioni di cui ho bisogno, ad esempio, monitorare i server backend e se sono disponibili per Haproxy. Ovviamente abbiamo un monitoraggio aziendale, ma ci sono persone che possono reagire per un periodo piuttosto lungo, + perché... Il mio dipartimento è impegnato nello sviluppo e il software appare e scompare abbastanza a lungo da superare la burocrazia.

Come scrivere accidentalmente una Web-GUI per Haproxy

In generale, ho deciso di condividere, perché risulta che questa è l'unica GUI gratuita. E se qualcuno lo trovasse utile? Collegamento a GitHub.

Fonte: habr.com

Aggiungi un commento