stackstorm

Ansible-st2

Ansible роли и плейбуки для развертывания StackStorm.

StackStorm — это платформа для автоматизации на основе событий, написанная на Python. С более чем 50 интеграциями такими как GitHub, Docker, Nagios, NewRelic, AWS, Ansible, она позволяет соединить вашу существующую инфраструктуру в сложные рабочие процессы с автоматизированным реагированием и многим другим. Это аналог IFTTT для операций.

E2E Tests Repository deb/rpm Join our community Slack

Поддерживаемые платформы

  • Ubuntu Focal (20.04)
  • RHEL 7 и CentOS 7
  • RHEL 8 и Rocky Linux 8

Если вы используете предоставленный Vagrantfile, учтите, что по умолчанию используется Focal.

Чтобы получить доступ к Web UI StackStorm, не забудьте убедиться, что порты http и https разрешены в вашем файрволе.

Требования

Поддерживаемая версия Ansible и его зависимости. Необходимо как минимум 2 ГБ оперативной памяти и 3,5 ГБ свободного места на диске, так как StackStorm поставляется с RabbitMQ, Mongo, Redis и nginx.

Установка

# Развертывание StackStorm
ansible-playbook stackstorm.yml

Переменные

Ниже приведен список переменных, которые вы можете переопределить в своем плейбуке или инвентаре для настройки развертывания StackStorm:

Переменная Значение по умолчанию Описание
st2repo
st2repo_name stable Репозиторий StackStorm PackageCloud для установки. stable, unstable, staging-stable, staging-unstable
st2
st2_version latest Версия StackStorm для установки. present для установки доступного пакета, latest для автоматических обновлений, или установите конкретную версию, такую как 2.2.0 или с ревизией, такой как 2.2.0-1
st2_config {} Настройки конфигурации StackStorm для установки в файле st2.conf.
st2_system_user stanley Системный пользователь, от имени которого st2 будет выполнять локальные/удаленные действия shell.
st2_system_user_in_sudoers yes Добавить st2_system_user в sudoers (рекомендуется для работы большинства функций st2).
st2_ssh_key_file /home/{{st2_system_user}}/.ssh/{{st2_system_user}}_rsa Путь к SSH-ключу st2_system_user. По умолчанию будет сгенерирован.
st2_auth_enable yes Включить автономную аутентификацию StackStorm.
st2_auth_username testu Имя пользователя, используемое для автономной аутентификации StackStorm.
st2_auth_password testp Пароль, используемый для автономной аутентификации StackStorm.
st2_save_credentials yes Сохранить учетные данные для локального CLI в файле /root/.st2/config.
st2_rbac_enable no Включить RBAC.
st2_rbac Смотрите переменную st2_rbac в значениях по умолчанию роли Роли и назначения RBAC. Это словарь с тремя ключами: roles, assignments и mappings (на основе членства в группе LDAP). roles, assignments и mappings — это массивы. Каждый элемент массива следует точной схеме YAML для ролей, назначений, определенных в документации ST2. mappings немного отличаются; они используют ключи name и mapping, смотрите пример в ./roles/StackStorm.st2/defaults/main.yml.
st2_ldap_enable no Включить бэкэнд аутентификации LDAP.
st2_ldap Смотрите переменную st2_ldap в значениях по умолчанию роли Настройки для бэкэнда аутентификации LDAP. st2_ldap — это словарь и содержит один элемент backend_kwargs. backend_kwargs должны быть предоставлены в точном соответствии с перечисленными в документации ST2 для конфигурации LDAP.
st2_packs [ st2 ] Список пакетов для установки. Этот флаг не работает с пакетом, только для --python3.
st2_python_packages [ ] Список пакетов Python, которые нужно установить в виртуальную среду /opt/stackstorm/st2. Это необходимо при развертывании альтернативных бэкэндов аутентификации или координации, которые зависят от модулей Python для своей работы.
st2web
st2web_version latest Версия st2web для установки. present для установки доступного пакета, latest для автоматических обновлений, или установите конкретную версию, такую как 2.2.0 или с ревизией, такой как 2.2.0-1.
st2web_ssl_certificate null Строка с настраиваемым SSL сертификатом (.crt). Если не предоставлено, будет сгенерирован самоподписанный сертификат.
st2web_ssl_certificate_key null Строка с секретным ключом настраиваемого SSL сертификата (.key). Если не предоставлено, будет сгенерирован самоподписанный сертификат.
st2web_nginx_config null Строка с настраиваемым файлом конфигурации nginx (st2.conf). Если не предоставлено, будет использован конфигурационный файл по умолчанию.
st2chatops
nodejs_major_version 14 По умолчанию подходит для st2chatops версии >= 3.5.0.
st2chatops_version latest Версия st2chatops для установки. present для установки доступного пакета, latest для автоматических обновлений, или установите конкретную версию, такую как 2.2.0 или с ревизией, такой как 2.2.0-1.
st2chatops_st2_api_key API-ключ st2 для обновления в st2chatops.env с помощью "st2 apikey create -k" в задаче.
st2chatops_hubot_adapter Адаптер Hubot, который будет использоваться для st2chatops. По умолчанию — shell, но его следует изменить на один из поддерживаемых адаптеров. [Обязательно]
st2chatops_config { } В зависимости от адаптера в st2chatops_hubot_adapter, предоставьте хэш для настроек адаптера, чтобы обновить st2chatops.env. Например, для адаптера Hubot Slack: st2chatops_config: HUBOT_SLACK_TOKEN: xoxb-CHANGE-ME-PLEASE
st2chatops_version latest Версия st2chatops для установки. Используйте latest для автоматических обновлений или установите конкретную версию, такую как 2.2.0.

Примеры

Установите последнюю stable версию StackStorm со всеми его компонентами на локальной машине:

ansible-playbook --inventory localhost, --connection local stackstorm.yml

Чтобы установить StackStorm на удаленной машине с именем stackstorm.example.com, создайте и укажите инвентарь:

echo "stackstorm.example.com" > inventory
ansible-playbook --inventory inventory stackstorm.yml

Сохранение версии latest полезно для обновления StackStorm путем повторного выполнения плейбука, так как он переустановит (обновит) st2, когда будет доступна новая версия.

Это поведение по умолчанию. Если вы не хотите обновлений, рассмотрите возможность закрепления конкретной версии и номера ревизии.

Установите конкретную версию st2 с закрепленным номером ревизии:

ansible-playbook stackstorm.yml --extra-vars "st2_version=2.2.0 st2_revision=8"

Установка за прокси

Если вы устанавливаете за прокси, вы можете использовать переменные окружения http_proxy, https_proxy и no_proxy в плейбуке. Для st2smoketests вам нужно будет отключить прокси для localhost.

environment:
  http_proxy: http://proxy.example.net:3128
  https_proxy: http://proxy.example.net:3128
  no_proxy: 127.0.0.1,localhost

Разработка

Есть несколько требований при разработке на ansible-st2.

Это платформы, которые мы должны поддерживать (должны пройти крайние тесты):

  • Ubuntu Focal (20.04)
  • CentOS 7
  • Rocky Linux 8
  • RHEL 7 (через AWS)
  • RHEL 8 (через AWS)

Плейбуки и роли должны поддерживать идемпотентность Ansible. То есть повторный запуск плейбука stackstorm.yml должен завершиться с результатом changed=0.*failed=0 (при условии, что версии и ревизии закреплены).

Для локальной разработки доступен Vagrantfile. По умолчанию следующая команда настроит виртуальную машину Ubuntu 20 (ubuntu/focal64):

vagrant up

Другие поддерживаемые дистрибутивы:

vagrant up ubuntu20
vagrant up centos7
vagrant up rockylinux8

Другие методы установки

Вас могут заинтересовать другие методы развертывания StackStorm:

Получение помощи

Если у вас возникли какие-либо проблемы, наше сообщество готово помочь, не стесняйтесь:

Ваши вопросы, комментарии и вклады более чем приветствуются и очень ценятся!

О проекте

Install StackStorm (IFTTT for Ops) with all the components like Web UI, ChatOps and dependant services including RabbitMQ, MongoDB, nginx.

Установить
ansible-galaxy install StackStorm/ansible-st2
Лицензия
apache-2.0
Загрузки
624634
Владелец
Event-driven automation. Used by Netflix & many more....