StackStorm — это технология, которая позволяет объединить множество инструментов админа в одном интерфейсе чата. Удобно, когда вся информация, системные операции, запуск тестов и отчеты об ошибках выводятся в одном окне, к тому же их здесь будут видеть все участники команды. Мы рассмотрим интеграцию на примере Slack, но на сайте Hubot ты можешь найти адаптеры для Telegram, Skype, Jabber и других мессенджеров, вплоть до китайского QQ.
 

Возможности StackStorm

Современная разработка программ совершенно не похожа на ту, что была еще десяток лет назад, когда все сидели в одной комнате и писали на одном языке. Сегодня в приложении используются несколько языков и фреймворков. Есть дополнительные технологии, автоматизирующие тестирование, сборку и деплой, добавим сюда набирающие популярность микросервисы. Все это знать нереально, а поэтому в процессе задействуется множество специалистов, часть из которых может привлекаться временно для отдельных тасков. Более того, нередко задача стоит на стыке специальностей, и для быстрого решения требуется или универсал, или работа нескольких специалистов. В команде могут быть разработчики с разных континентов, работающие по своим часовым поясам, и иногда, чтобы справиться с простой проблемой, уходит несколько часов. В итоге на первое место выходит согласованная и эффективная работа команды, что достигается в том числе и через автоматизацию и обмен информацией.

Автоматизация всего, начиная с тестирования и развертывания ПО, позволяет не только экономить время, но и, главное, решать большинство задач неспециалисту, который выполняет сложные операции буквально одной командой, не зная ничего во внутренностях. То есть, чтобы развернуть кластер в AWS, не нужен сисадмин, достаточно выполнить плейбук Ansible. Все это лежит в основе идеологии Infrastructure as Code, заключающейся в том, чтобы описать инфраструктуру при помощи простых правил.

Для оперативного общения обычно используются чаты, и очень удобно, когда буквально вся информация, системные операции, запуск тестов и отчеты об ошибках выводятся в одном окне. Кроме прочего, это позволяет остальным видеть, как делают ту или иную операцию другие, и учиться, а в будущем выполнять те же действия самостоятельно. Это и послужило основой идеи, названной ChatOps (еще ее называют IFTTT for Ops — от if this, then that), впервые реализованной в GitHub в боте Hubot, релиз которого состоялся в 2011 году. Написанный в CoffeeScript на Node.js он из коробки позволяет выполнять и выводить результат некоторых системных команд прямо в окне чата. Поставляется Hubot с набором готовых скриптов для автоматизации популярных задач, со временем сами пользователи создали новые скрипты, еще больше расширяющие его базовые возможности. Идея постепенно становилась популярной, и сегодня есть уже больше десятка написанных на самых разных языках решений, позволяющих интегрировать самые разные инструменты и мессенджеры: Lita на Ruby, Errbot и StackStorm на Python, Nestor и Cog на JavaScript.

 

Проект StackStorm

StackStorm — платформа с открытым исходным кодом, которая связывает воедино инфраструктуру и приложения и позволяет автоматизировать повседневные задачи, приложения и процессы, реагировать на предопределенные события. Это может быть отправка сообщения о сбое, устранение неисправности (например, перезапуска сервиса), откат действий, перезапуск виртуальных машин на другой ноде, непрерывное развертывание и многое другое. Легко расширяемый и гибкий инструмент с большим количеством возможностей. StackStorm написан на Python, в настройках используются YAML и Jinja. Кто работал с Ansible, долго переучиваться не будет. Хотя в настройках могут использоваться и некоторые другие языки, например Python или bash.

Вся инфраструктура описывается через расширяемый набор правил, содержащих описания датчиков, триггеров и действий (actions). Датчики отслеживают входящую и исходящую информацию, при наступлении события срабатывает триггер. В простейшем случае это может быть веб-хук, предупреждение системы мониторинга Sensu, задача JIRA и так далее. Система аудита подробно регистрирует и сохраняет все действия, кто и когда что выполнил и с каким результатом. Поддерживается интеграция с системным журналом, Logstash, Splunk, statsd и другие. По умолчанию StackStorm практически не содержит никаких модулей, все расширения доступны в пакетах, которые легко устанавливаются (StackStorm предоставляет репозиторий) и интегрируются. Полный список пакетов можно найти в репозиториях: старом и новом. Их более 100, здесь и поддержка AWS, Azure, Ansible, Twitter, GitHub и Bitbucket, Nagios, Docker, Kubernetes, Jenkins, Windows и многого другого. Есть даже плагин для интеграции с IP-камерой. Модуль ChatOps официально поддерживает Yammer, IRC, HipChat, Cisco Spark, Slack и Hubot (посмотреть и настроить можно в /opt/stackstorm/chatops/st2chatops.env). Остальные необходимо подключать через внешний адаптер.

Для управления StackStorm предлагает CLI, веб-интерфейс и REST API. StackStorm распространяется по условиям Apache License, поддержка осуществляется сообществом. Кроме того, доступна коммерческая версия BWC, имеющая приоритетную поддержку, улучшенную систему контроля доступа, интеграцию с LDAP и конструктор рабочих процессов.

 

Установка в Ubuntu 16.04 LTS

Официально поддерживаются x64-версии Ubuntu и RHEL/CentOS. Минимально требуется сервер с Dual CPU, 2 Гбайт RAM и 10 Гбайт свободного места. Для продакшена требования чуть выше. Для работы StackStorm понадобится также nginx, MongoDB, RabbitMQ и PostgreSQL. Вариантов установки несколько. Можно использовать bash-скрипт, который сам выполнит все основные операции:

$ curl -sSL https://stackstorm.com/packages/install.sh | sudo bash -- --user=admin --password=p@ssw0rd

Этот вариант идеально подходит для быстрого знакомства в standalone-режиме на чистом сервере. Если на компьютере уже имеются некоторые приложения из перечисленных или порт занят, то следует устанавливать все самостоятельно из репозитория, но при этом часть операций по конфигурированию сервисов необходимо будет выполнить вручную. На сайте есть подробная документация, запутаться там очень сложно. Возможна простая установка StackStorm + Ansible + Slack, Hubot при помощи Vagrant, но, так как там запускаются две виртуальные машины, памяти на компьютере должно быть не менее 8 Гбайт. Для установки в продакшен лучше использовать плейбук для Ansible.

Все настройки StackStorm можно посмотреть в /etc/st2/st2.conf, в частности пароль для входа сохраняется в /etc/st2/htpasswd. Все файлы, в том числе и дополнительные пакеты, будут установлены в /opt/stackstorm.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Цифровой паноптикум. Настоящее и будущее тотальной слежки за пользователями

Даже если ты тщательно заботишься о защите своих данных, это не даст тебе желаемой приватн…