Ansible playbooks to deploy StackStorm.
StackStorm is event-driven automation platform written in Python. With over 50+ integrations like GitHub, Docker, Nagios, NewRelic, AWS, Ansible it allows you to wire together your existing infrastructure into complex Workflows with auto-remediation and many more. Aka IFTTT orchestration for Ops.
- Ubuntu Xenial (16.04)
- Ubuntu Bionic (18.04)
- RHEL7 / CentOS7
- RHEL8 / CentOS8
If you're using the provided Vagrantfile, note that it uses Bionic by default.
In order to access StackStorm Web UI, please don't forget to ensure that http/https ports are opened in your firewall system.
At least 2GB of memory and 3.5GB of disk space is required, since StackStorm is shipped with RabbitMQ, Mongo and nginx.
# stackstorm
ansible-playbook stackstorm.yml
Below is the list of variables you can redefine in your playbook to customize st2 deployment:
Variable | Default | Description |
---|---|---|
st2repo | ||
st2repo_name |
stable |
StackStorm PackageCloud repository to install. stable , unstable , staging-stable , staging-unstable |
st2 | ||
st2_version |
latest |
StackStorm version to install. present to install available package, latest to get automatic updates, or pin it to numeric version like 2.2.0 . |
st2_revision |
1 |
StackStorm revision to install. Used only with pinned st2_version . |
st2_config |
{} |
Hash with StackStorm configuration settings to set in st2.conf ini file. |
st2_system_user |
stanley |
System user from which st2 will execute local/remote shell actions. |
st2_system_user_in_sudoers |
yes |
Add st2_system_user to the sudoers (recommended for most st2 features to work). |
st2_ssh_key_file |
/home/{{st2_system_user}}/.ssh/{{st2_system_user}}_rsa |
Path to st2_system_user SSH private key. It will be autogenerated by default. |
st2_auth_enable |
yes |
Enable StackStorm standalone authentication. |
st2_auth_username |
testu |
Username used by StackStorm standalone authentication. |
st2_auth_password |
testp |
Password used by StackStorm standalone authentication. |
st2_save_credentials |
yes |
Save credentials for local CLI in /root/.st2/config file. |
st2_packs |
[ st2 ] |
List of packs to install. This flag does not work with a --python3 only pack. |
st2_python_packages |
[ ] |
List of python packages to install into the /opt/stackstorm/st2 virtualenv. This is needed when deploying alternative auth or coordination backends which depend on Python modules to make them work. |
st2_u16_add_insecure_py3_ppa |
false |
Whether permission is granted to install the deadsnakes Python3.6 PPA for Ubuntu 16. |
st2web | ||
st2web_ssl_certificate |
null |
String with custom SSL certificate (.crt ). If not provided, self-signed certificate will be generated. |
st2web_ssl_certificate_key |
null |
String with custom SSL certificate secret key (.key ). If not provided, self-signed certificate will be generated. |
st2web_nginx_config |
null |
String with a custom nginx configuration file (st2.conf ). If not provided, the default st2.conf will be used. |
ewc | ||
ewc_license |
null |
EWC license key is required for installing EWC enteprise bits via this ansible role. |
ewc_repo |
enterprise |
EWC PackageCloud repository to install. enterprise , enterprise-unstable , staging-enterprise , staging-enterprise-unstable |
ewc_version |
latest |
EWC enterprise version to install. present to install available package, latest to get automatic updates, or pin it to numeric version like 2.2.0 . The version used here should match st2_version . |
ewc_revision |
1 |
EWC enterprise revision to install. Used only with pinned ewc_version . |
ewc_rbac |
See ewc_rbac variable in role defaults |
EWC RBAC roles and assignments. This is a dictionary with two keys roles and assignments . roles and assignments are in turn both arrays. Each element in the array follows the exact YAML schema for roles and assignments defined in EWC documentation. |
ewc_ldap |
See ewc_ldap variable in role defaults |
Settings for EWC LDAP authentication backend. ewc_ldap is a dictionary and has one item backend_kwargs . backend_kwargs should be provided as exactly listed in EWC documentation for LDAP configuration. |
st2chatops | ||
st2chatops_version |
latest |
st2chatops version to install. present to install available package, latest to get automatic updates, or pin it to numeric version like 2.2.0 . |
st2chatops_st2_api_key |
st2 API key to be updated in st2chatops.env using "st2 apikey create -k" in a task | |
st2chatops_hubot_adapter |
Hubot Adapter to be used for st2chatops. Default is shell , but should be changed to one of the supported adapters .[Required] |
|
st2chatops_config |
{ } |
Based on adapter in st2chatops_hubot_adapter , provide hash for the adapter settings, to update st2chatops.env . For example, for Slack hubot adapter: st2chatops_config: HUBOT_SLACK_TOKEN: xoxb-CHANGE-ME-PLEASE |
st2chatops_version |
latest |
st2chatops version to install. Use latest to get automatic updates or pin it to numeric version like 2.2.0 . |
Install latest stable
StackStorm with all its components on local machine:
ansible-playbook stackstorm.yml -i 'localhost,' --connection=local
Note that keeping
latest
version is useful to update StackStorm by re-running playbook, since it will reinstall st2 if there is new version available. This is default behavior. If you don't want updates - consider pinning version-revision numbers.
Install specific numeric version of st2 with pinned revision number as well:
ansible-playbook stackstorm.yml --extra-vars='st2_version=2.2.0 st2_revision=8'
If you are installing from behind a proxy, you can use environment variables http_proxy
, https_proxy
, and no_proxy
in the playbook. For the
st2smoketests, you will need to disable proxy for localhost.
environment:
http_proxy: http://proxy.example.net:3128
https_proxy: http://proxy.example.net:3128
no_proxy: 127.0.0.1,localhost
There are a few requirements when developing on ansible-st2
.
These are the platforms we must support (must pass end-to-end testing):
- Ubuntu Xenial
- Ubuntu Bionic
- CentOS7
- CentOS8
- RHEL7 (via AWS)
- RHEL8 (via AWS)
Must also support Ansible Idempotence (Eg. Ansible-playbook re-run should end with the following results: changed=0.*failed=0
)
For development purposes there is Vagrantfile available. The following command will setup ubuntu18 box (ubuntu/bionic64
) by default:
vagrant up
Other distros:
vagrant up ubuntu16
vagrant up centos7
vagrant up centos8
You might be interested in other methods to deploy StackStorm engine:
-
Configuration Management
-
Manual Instructions
If you're in stuck, our community always ready to help, feel free to:
- Ask questions in our public Slack channel
- Report bug, provide feature request or just give us a ✮ star
Your contribution is more than welcome!