Связаться по Skype: vkarabedyants
Позвонить Написать
+7 (499) 404-28-83

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

ChatOps. Начало работы

chatops

Что такое ChatOps?

ChatOps предоставляет контекст работы, который вы уже делаете, в разговорах, которые вы ведете

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

Вы можете приступить к выполнению таких операций, как развертывание кода или серверов предоставления ресурсов из чата, просмотр графиков из инструментов мониторинга, отправка SMS, контроль ваших кластеров или просто запуск простых команд оболочки. ChatOps может представлять собой высокоуровневое представление вашего действительно сложного процесса CI / CD ,упрощая общение в чатом, например !deploy . Этот подход делает чудеса для повышения наглядности и уменьшения сложности в процессе развертываний.

Расширенные возможности ChatOps

StackStorm — это проект OpenSource, специально ориентированный на автоматизацию событий ChatOps.Платформа поддерживает множество инструментов DevOps, таких как управление конфигурацией, мониторинг, оповещение, графическое отображение и т. д., что позволяет вам управлять всем из одного центра управления.Это идеальный инструмент для ChatOps, предоставляющий возможность создавать и автоматизировать любые мыслимые рабочие процессы и управлять любыми наборами инструментов непосредственно из чата.

StackStorm имеет возможность интеграции с Ansible и множество расширенных функций ChatOps в версиях платформы 1.0 , 1.2 и 1.4, чтобы помочь вам в реальной работе, а не просто отображать забавные фотографии котенка из чата. Ниже я расскажу, как сделать ChatOps и Ansible возможным с помощью платформы StackStorm.

Кстати, StackStorm as Ansible является декларативным, написанным на Python и использующим YAML + Jinja.

План

В этом уроке мы собираемся сначала установить управляющую машину Ubuntu 14, которая будет обрабатывать нашу систему ChatOps. Затем настроим платформу StackStorm, включая пакет интеграции Ansible. Наконец, мы подключим систему с Slack и покажем некоторые простые, но реальные примеры использования Ansible непосредственно из чата интерактивным способом.

Итак, давайте начнем и убедитесь, что мы близки к технологической сингулярности , предоставив root доступ к ботам чата и позволяя им управлять нашими 100 + серверами и кластерами.

Шаг 0. Подготовьте Slack

Как уже говорилось, давайте использовать Slack.com для чата. Зарегистрируйтесь в Slack, если у вас ее еще нет. Включите интеграцию Hubot в настройках.

Hubot — бот-движок GitHub, созданный для ChatOps.


Как только вы закончите, у вас будет API-токен:

Затем мы сконфигурируем всю платформу StackStorm, покажем некоторые полезные примеры, а также разрешим создавать собственные команды ChatOps.

Но подождите, есть простой способ!

Легенький режим!

Для тех, кто ленив (большинство DevOps), вот брандмауэр-репо, которое устанавливает все необходимые инструменты в простых сценариях, подготовив платформу для написания команд ChatOps в Slack chat: https://github.com/StackStorm/showcase-ansible-chatops

Для тех, кто интересуется деталями — перейдем к ручному режиму и идем дальше.

Шаг 1. Установите StackStorm

Это действительно так просто, одна команда:

Этот однострочный интерфейс предназначен только для демонстрационных целей, для развертывания prod вы должны использовать доступные ansible playbooks для установки st2.

Шаг 2. Установите Ansible Integration pack

Идея интеграции пакетов в StackStorm заключается в том, что они соединяют систему с внешними инструментами или службами. Нам нужен пакет Ansible:

Помимо пакета Ansible Integration , он устанавливает существующие двоичные файлы в Python virualenv, расположенный в /opt/stackstorm/virtualenvs/ansible/bin .

Шаг 3. Настройка ChatOps

Теперь вам нужно настроить файл /opt/stackstorm/chatops/st2chatops.env в соответствии с вашими потребностями. Для этого стоит взглянуть на все переменные, но сначала убедитесь, что вы редактируете следующие envs:

 Перезапустите st2chatops чтобы применить изменения, и все готово к работе:

Шаг 4. Первый ChatOps

На этом этапе вы должны увидеть Stanley bot  в чате. Пригласите его в свой канал Slack:


Получить список доступных команд:


Бьюсь об заклад, вы полюбите shipit :


После игры с существующими командами, давайте продолжим с чем-то серьезным.

Шаг 5. Создание собственных команд ChatOps

Одной из функций StackStorm является возможность создания псевдонимов команд, что упрощает работу с ChatOps. Вместо того, чтобы писать длинную команду, вы можете просто привязать ее к чему-то более дружественному и понятному, простому.

Давайте создадим собственный пакет StackStorm, который будет содержать все необходимые команды. Шаблон пакета StackStorm  псевдонимов aliases/ansible.yaml со следующим содержимым:

Теперь переместите ваши изменения в разветвленное репо GitHub, и вы сможете установить только что созданный пакет. Для этого уже существует псевдоним ChatOps:

Теперь мы можем запускать простую команду непосредственно из Slack chat:

ansible chatops

Которая на низком уровне эквивалентена:

Но давайте рассмотрим более полезные примеры, демонстрирующие преимущества интерактивности ChatOps.

Пример №1: получить статус сервера

У Ansible есть простой модуль ping, который просто соединяется с указанными узлами и возвращает успех pong .Простой, но мощный пример, чтобы понять, состояние серверов прямо из чата в считанные секунды, без входа в терминал.

Чтобы сделать это, нам нужно создать еще одно action для нашего пакета, в котором выполняется реальные action alias команды и action alias которые является просто синтаксическим синонимами, Реализуем возможным в ChatOps:


Действия actions/server_status.yaml :

Псевдонимов действий aliases/server_status.yaml :

Убедитесь, что вы настроили хосты в файле Ansible inventory /etc/ansible/hosts .

После внесенных изменений не забудьте переустановить отредактированный пакет из чата (замените его на ваш репозиторий github):


Очень удобно, что вы можете сохранить всю конфигурацию команды ChatOps в удаленном репо, как пакет StackStorm, и перезагрузить его после редактирования.

Давайте получим статус сервера:
статус сервера в chatops
Это действительно мощно, любой может запустить без доступа к серверу! При таком подходе сотрудничество, деплой и работу вокруг инфраструктуры можно выполнять из любого места в чате: находитесь ли вы в офисе или работаете удаленно (некоторые из нас могут работать непосредственно с пляжа).

Пример №2: перезапустить службы

У вас были ситуации, когда простой перезапуск службы может решить проблему? Не идеальный способ фиксации сбоя, но иногда вам просто нужно быстро решить проблему. Давайте напишем команду ChatOps, которая перезапускает определенные службы на определенных хостах.

Мы хотим сделать что-то вроде этого:

В ранее созданных пакетах StackStorm добавим actions/service_restart.yaml :

Псевдоним для ChatOps: aliases/service_restart.yaml :

Давайте теперь попробуем:

chatops
И знаешь, что? Благодаря мобильному клиенту Slack вы можете запускать эти команды чата и со своего мобильного телефона!

Пример №3: Получить в настоящее время MySQL-запросы

Мы хотим, чтобы простая команда slack запрашивала список процессов mysql с сервера db:


Действие actions/mysql_processlist.yaml :

Action alias для ChatOps: aliases/mysql_processlist.yaml :

Обратите внимание, что мы сделали параметр hosts необязательным (по умолчанию — db ), поэтому эти команды эквивалентны:

Ваш администратор базы данных будет счастлив!

Пример №4: получить статистику HTTP nginx

Мы хотим показать коды состояния HTTP, сортировать их по поступлению, чтобы понять, сколько 200 или 50x есть на определенных серверах:


Фактическое действие, выполняющее actions/http_status_codes.yaml команды actions/http_status_codes.yaml :

Псевдоним: aliases/http_status_codes.yaml

Результат:


Теперь чат больше похож на центр управления. Вы можете делать что-то на своих хостах из чата, и каждый может видеть результат!

Пример №5: Патч безопасности

Представьте, что вы должны исправить еще одну критическую уязвимость, такую ​​как Shellshock . Нам нужно обновить bash на всех машинах с помощью Ansible. Вместо того, чтобы запускать его как специальную команду, давайте playbooks/update_package.yaml сделаем красиво playbooks/update_package.yaml :

Вы можете видеть, что переменные {{ hosts }} и {{ package }} в playbook вводятся снаружи, см. Действия StackStorm action actions/update_package.yaml :

И вот псевдоним действия, который позволяет запускать playbook как простую команду в чате,

aliases/update_package.yaml :

В заключение:

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

Это простые примеры. Более сложные ситуации, когда несколько инструментов DevOps привязаны к динамическим рабочим процессам, будут рассмотрены в будущих статьях. Именно здесь StackStorm демонстрирует свою супермощность, принимая решения о том, что делать в зависимости от ситуации: управляемая событиями архитектура, такая как системы самовосстановления.

Хотите упростить работу?  Обращайтесь [email protected]

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.