О том, как написать Web GUI для HAProxy, мы уже говорили в двух статьях (1 и 2). С момента публикации последней статьи прошёл год; сейчас, по прошествии времени, очевидно, что о многих вещах (важных и полезных) мы так и не рассказали подробно. Сегодня мы возвращаемся на Хабр - и постараемся публиковать статьи на более или менее регулярной основе. В этих статьях мы подробно расскажем о специфике работы c Roxy-WI, о возможностях и преимуществах нашего решения. Начнём с набора функций, о котором мы в предыдущих статьях упоминали, но мало. Речь идёт о работе с конфигурационными файлами.
С помощью Roxy-WI можно работать с конфигурационными файлами для трёх сервисов: HAProxy, Nginx и Keepalived. Через веб-интерфейс пользователи могут выполнять следующие операции:
редактировать конфигурационные файлы;
визуализировать структуру сети;
сравнивать текущую версию конфигурационного файла с предыдущей;
сохранять все предыдущие версии конфигурационных файлов и откатываться на старую версию в случае необходимости;
Рассмотрим каждую из этих функций подробнее.
Зачем вообще редактировать конфигурационные файлы через веб-интерфейс?
Такой вопрос может возникнуть у многих читателей. Действительно, многие из нас привыкли работать с конфигурационными файлами в текстовом редакторе, и никаких сложностей в этом на первый взгляд нет. Но есть нюансы. Начнём с того, что конфигурационный файл может иметь очень сложную структуру. Сориентироваться в нём бывает сложно, особенно начинающему пользователю. В графическом интерфейсе Roxy-WI всё просто и наглядно. Возьмём в качестве примера конфигурационный файл для HAProxy. Итак, выбираем в главном меню HAProxy => Configs, в выпадающем меню выбираем нужный сервер и нажимаем на кнопку Open. После этого видим такую картину (приводим небольшой фрагмент конфига, секции global и defaults):
Всё вполне понятно; если кликнуть по ссылке Edit, откроется форма для редактирования:
После внесения изменений можно нажать на кнопку Check config и проверить конфигурационный файл на наличие синтаксических ошибок.
Для начинающего пользователя HAProxy (а также Nginx и Keepalived) на таком интерфейсе очень хорошо учиться. Опытному пользователю графический интерфейс поможет не запутаться в сложных конфигах и тем самым снизить вероятность ошибок из-за человеческого фактора.
Ещё Roxy-WI может существенно упростить жизнь, если серверов много: все конфиги можно редактировать в одном месте. Если вы изменили конфиг на master-сервере и применили одно из указанных на кнопках со скриншота выше действий, аналогичные изменения произойдут и на slave-сервере.
Визуализация
Просто читая конфигурационный файл HAProxy, не всегда можно сразу представить, а как именно всё устроено. Именно для этого в Roxy-WI предусмотрена функция визуализации. Выбираем нужный сервер, нажимаем на кнопку Map и видим:
Такая возможность очень полезна для всех, кто только учится работать с HAProxy.
Кроме того, она может очень пригодится в ситуации, когда нужно что-то наглядно объяснить коллегам, которые с HAProxy вообще дела не имели или имели, но очень мало (менеджерам, тестировщикам. техническим писателям и многим другим — здесь возможны варианты).
Работа с версиями
Представьте себе такую гипотетическую ситуацию: вы что-то изменили в конфиге, и нужный вам сервис (тот же HAProxy или Nginx) не запускается. Для таких случаев в Roxy-WI предусмотрена возможность сравнения конфигурационных файлов.
Выбираем нужные версии, нажимаем на кнопку Compare — и на видим diff двух конфигов. Выглядит он так же, как дифф файлов на GitHub:
Функция сравнения также может пригодиться в случаях, когда доступ к конфигурационным файлам имеют несколько человек: можно довольно быстро установить, кто, когда и что изменил.
Так как Roxy-WI сохраняет все версии конфигурационных файлов, то в случае возникновения неисправностей всегда можно откатиться на предыдущую версию. Например, если после изменения конфига возникли ошибки, вы можете откатиться на старую (рабочую) версию, и сервисы будут доступны, пока вы ищете и исправляете ошибки в новой.
Набор функций по работе с версиями мы планируем расширять. В Roxy-WI серверы могут получать статус protected. Для этих серверов мы планируем сделать следующее:, полноценное редактирование будет доступно только администраторам, а остальные пользователи смогут только предагать изменения. После проверки админом эти изменения могут быть или приняты, или отклонены — принцип такой же, как при работе с мердж-реквестами на GitHub.
Заключение
В этой статье мы рассказали о возможностях работы с конфигурационными файлами через Roxy-WI. Приглашаем всех попробовать и приводим полезные ссылки:
https://roxy-wi.org/ - официальный сайт проекта (здесь же документация);
https://github.com/hap-wi/roxy-wi - официальный репозиторий проекта.
Любые пожелания по улучшению работы с конфигурами приветствуются - добро пожаловать в комментарии.