stackstorm
Ansible-st2
Ansible роли и плейбуки для развертывания StackStorm.
StackStorm — это платформа для автоматизации на основе событий, написанная на Python. С более чем 50 интеграциями такими как GitHub, Docker, Nagios, NewRelic, AWS, Ansible, она позволяет соединить вашу существующую инфраструктуру в сложные рабочие процессы с автоматизированным реагированием и многим другим. Это аналог IFTTT для операций.
Поддерживаемые платформы
- 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:
Управление конфигурацией
Ручные инструкции
Получение помощи
Если у вас возникли какие-либо проблемы, наше сообщество готово помочь, не стесняйтесь:
- Задавать вопросы в нашем публичном канале Slack
- Сообщать о проблемах, предоставлять запросы на новые функции или просто поставить этому проекту ✮ звезду
Ваши вопросы, комментарии и вклады более чем приветствуются и очень ценятся!
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