Як випадково написати Web-GUI для Haproxy

Сучасний світ системних адміністраторів зледарив нас красивими web-face-ами, що навіть не хочеться ставити софт, де немає цього самого «гуя» (відчуваю зараз полетять каміння від правовірних строчкерів), ну не через рядок постійно туди лазити, правда? Все б нічого, якщо софт поставив, налаштував і забув, а що робити, якщо туди треба постійно лазити, правити, і звичайно ж немає лога всіх дій, не писати ж щоразу cp cfg cfg_back, з часом заплутаєшся і заб'єш на цю справу .

Як випадково написати Web-GUI для Haproxy

Багато років тому я познайомився з таким чудовим балансером, як Haproxy. Все чудово та красиво. Стало у мене їх багато і задумався я про пошук GUI до нього, але його напрочуд не було. Дуже популярний софт, до того ж досить старий, так добре подумав я і продовжив зрідка правити ручками у своєму улюбленому vi і мати купу відкритих вкладок зі статистикою всіх активних серверів. Але настав час і мені довелося задовольняти "хотілки" людей, які писали софт для роботи через http, ось тут і почалося цікаве.

Ручки засвербіли, очі загорілися і я приступив. Точніше почав думати на чому писати, згадувати давно забутий PHP, якось не хотілося, та й здавалося, що він не зовсім підходить для цієї справи. У результаті вибір упав на Python, в майбутньому точно знадобиться подумав я і почалося вбирання інформації.

На початку завдання стояли не такі складні: можливість редагувати конфіги з веб-інтерфейсу з однієї точки входу, збереження попередніх версій конфігів. Даний, не особливо великий функціонал вдалося реалізувати досить швидко, але тут у мені зіграла чи то адмінська лінь, чи то горезвісний перфекціонізм і мені цього здалося звичайно мало. І тут почали з'являтися такі фічі як порівняння двох конфігів, логування всіх дій пов'язаних з конфігами, Runtime API і додавання секцій через web.

Як випадково написати Web-GUI для Haproxy

І як порядний UNIX адміністратор живе за рахунок вільного ПЗ я вирішив поділитися зі світом, а один комусь знадобиться? Але для цього треба було зробити все так, щоб не доводилося лазити в код, але максимум в конфіг приклади (Зараз більшість налаштувань переїхало в базу. Як на мене їх стало зручніше редагувати і при оновленні не буде помилок через відсутність у конфізі якого- чи параметра).

Через місяць я виклав свій виріб на Github особливо не на що не розраховуючи. А дарма, софт виявився трохи затребуваним і тут почалося найцікавіше… Активна «допилка» йде вже майже рік. Часом є бажання все це залишити, т.к. мої потреби перекрито вже давно. Ну ось навіщо мені можливість розгорнути «кластер» з keepalived і HAProxy через веб морду, якщо у мене це займає кілька хвилин? А людям виявляється треба, та й мені цікаво, і є чим зайнятися. Хоча звичайно є і потрібні мені функції, наприклад, як моніторинг бекенд серверів, чи доступні вони для Haproxy. У нас звичайно є корпоративний моніторинг, але там сидять люди, які можуть досить довго реагувати, + т.к. мій відділ займається розробкою та софт то з'являється, то зникає досить довго пробиватися через бюрократію.

Як випадково написати Web-GUI для Haproxy

Загалом вирішив поділитись, адже виходить, що це єдиний безкоштовний GUI. А раптом кому знадобиться? Посилання на GitHub.

Джерело: habr.com

Додати коментар або відгук