В силу служебных обязанностей приходится заниматься почтовой системой. И вот однажды, разблокируя учетную запись после очередной заявки, задумался о том, что надо с этим что-то делать. Про это что-то и будет дальнейшее повествование.
Стало тут вдруг интересно а кто вообще и сколько и куда ходить на мой сайт. Поискал всякого в сети и нашел описание пакета goaccess. Анализатор логов. В дистрибутиве есть, так что поставил настроил и получил статистику. Правда пришлось перенастроить, пересобрать и перезапустить контейнеры.
С недавних пор этот сайт генерится из markdown-шаблонов в полностью статическое содержимое (html-файлы). Делается это при помощи tcl-ssg https://github.com/tclssg/tclssg. И вот решил я на примере моего сайта показать механизм непрерывной интеграции и доставки (да, то самое CI/CD).
Настроить процесс непрерывной сборки и доставки на сайт пакетов программ из Git-репозитария с исходниками.
Так как buildbot - это распределённая система, то будет логичным под каждую архитектуру и операционку сделать отдельный сборочный хост. В нашем случае это будут LXC-контейнеры (в случае linux) и qemu (в случае windows):
vm-srv-build1 - centos 7, тут будет buildbot мастер (master) и один из работников (worker)
vm-srv-build2 - debian 10, для сборки DEB пакетов
vm-srv-build3 - windows 10, для сборки, сами понимаете, под что
Собирать будем Rac GUI - графическая морда к 1С rac для управления кластером серверов. Под линукса будут использоваться штатные средства под каждую ОС, для сборки exe-файла под windows из tcl-скрипта используется freewrap.
Код сайта статический, генериться из markdown-шаблонов при помощи tcl-ssg. Т.е. при сборке нового пакета buildbot будет запускать генерацию сайта.
(дальше)
Для полноценного запуска Mattermost в работу, туда требуется добавить определённое количество пользователей, конечно логичным было-бы подключиться к нашему AD, но модуль интеграции с LDAP продаётся за деньги, а руками вколачивать несколько десятков юзеров утомительно да и не правильно. Потому будем городить костыли.
Продолжим разбираться с mattermost в части интеграции с внешними сервисами.
Часть вторая. Интеграция с Zabbix
Во второй части повествования о интеграции mattermost, речь пойдет про отправку сообщений об авариях из zabbix в mattermost. В результате поисков в сети был взят за основу вот
этот скрипт. Код написан на Perl, поэтому может потребоваться до установка перловых пакетов. Прежде чем приступить к описанию кода (он несколько изменён по сравнению с исходным) сперва, как водится, произведём некоторые настройки.
(дальше)
Выбирая замену, используемой у нас, системы обмена сообщениями, наткнулся на описание Mattermost, и решил попробовать. Одним из плюсов, описываемой системы, является простая интеграция со сторонними сервисами, так называемые "хуки" (outgoing и incoming hooks). Вот про настройку взаимодействия через хуки с внешними системами и будет данная статья (в нашем конкретном случае это zabbix и glpi).
Так как постоянно заглядывать в консоль Bareos-a или на вэб-интерфейс не всегда удается, а контролировать выполнение заданий резервного копирования надо, то решено было всё это дело возложить на могучие плечи Zabbixa.
Решил я возродить свой старый проект Tcl/Tk Project Manager (IDE для tcl/tk) и для удобства разработки исходники были помещены в git-репозиторий bitbucket.org. Но тут встал вопрос публикации новостей о новых выпусках программы, ссылок на архивы или пакеты для загрузки. И вот возникла идея этот процесс автоматизировать, благо для этого все механизмы и инструменты есть. Первым делом будем автоматизировать упаковку исходников в архив и загрузку его на сайт для скачивания. Паковать исходники будем tar-ом а загружать на сайт по ftp при помощи curl.