StackStorm.stackstorm
Ansible-st2
Roles y playbooks de Ansible para desplegar StackStorm.
StackStorm es una plataforma de automatización impulsada por eventos escrita en Python. Con más de 50 integraciones como GitHub, Docker, Nagios, NewRelic, AWS y Ansible, te permite conectar tu infraestructura existente en flujos de trabajo complejos con auto-remediación y mucho más. Es la orquestación de IFTTT para operaciones.
Plataformas soportadas
- Ubuntu Focal (20.04)
- RHEL 7 y CentOS 7
- RHEL 8 y Rocky Linux 8
Si estás usando el
Vagrantfile
proporcionado, ten en cuenta que usa Focal por defecto.
Para acceder a la interfaz web de StackStorm, no olvides asegurarte de que los puertos http y https están permitidos por el cortafuegos.
Requisitos
Una versión soportada de Ansible y sus dependencias. Se requieren al menos 2 GB de memoria y 3.5 GB de espacio en disco, ya que StackStorm se envía con RabbitMQ, Mongo, Redis y nginx.
Instalación
# Desplegar StackStorm
ansible-playbook stackstorm.yml
Variables
A continuación se presenta una lista de variables que puedes redefinir en tu playbook o inventario para personalizar el despliegue de StackStorm:
Variable | Por defecto | Descripción |
---|---|---|
st2repo | ||
st2repo_name |
stable |
Repositorio de StackStorm en PackageCloud para instalar. stable , unstable , staging-stable , staging-unstable |
st2 | ||
st2_version |
latest |
Versión de StackStorm a instalar. present para instalar el paquete disponible, latest para obtener actualizaciones automáticas o fijar a una versión numérica como 2.2.0 o con una revisión como 2.2.0-1 |
st2_config |
{} |
Hash con la configuración de StackStorm para establecer en el archivo ini st2.conf . |
st2_system_user |
stanley |
Usuario del sistema desde el cual st2 ejecutará acciones de shell locales/remotas. |
st2_system_user_in_sudoers |
yes |
Añadir st2_system_user a los sudoers (recomendado para el funcionamiento de la mayoría de las características de st2 ). |
st2_ssh_key_file |
/home/{{st2_system_user}}/.ssh/{{st2_system_user}}_rsa |
Ruta al SSH clave privada de st2_system_user . Se generará automáticamente por defecto. |
st2_auth_enable |
yes |
Habilitar la autenticación independiente de StackStorm. |
st2_auth_username |
testu |
Nombre de usuario utilizado por la autenticación independiente de StackStorm. |
st2_auth_password |
testp |
Contraseña utilizada por la autenticación independiente de StackStorm. |
st2_save_credentials |
yes |
Guardar credenciales para CLI local en el archivo /root/.st2/config . |
st2_rbac_enable |
no |
Habilitar RBAC. |
st2_rbac |
Ver la variable st2_rbac en los valores por defecto del rol |
Roles y asignaciones de RBAC. Este es un diccionario con tres claves roles , assignments y mappings (basados en la pertenencia a grupos LDAP). roles , assignments y mappings son arreglos. Cada elemento del arreglo sigue el esquema YAML exacto para roles, asignaciones definido en la documentación de ST2. mappings son ligeramente diferentes, utilizan una clave name y una clave mapping , consulta ./roles/StackStorm.st2/defaults/main.yml para un ejemplo. |
st2_ldap_enable |
no |
Habilitar el backend de autenticación LDAP. |
st2_ldap |
Ver la variable st2_ldap en los valores por defecto del rol |
Configuraciones para el backend de autenticación LDAP. st2_ldap es un diccionario y tiene un elemento backend_kwargs . backend_kwargs debe proporcionarse exactamente como se enumera en la documentación de ST2 para configuración de LDAP. |
st2_packs |
[ st2 ] |
Lista de packs para instalar. Esta opción no funciona con un pack "solo para --python3". |
st2_python_packages |
[ ] |
Lista de paquetes de Python para instalar en el entorno virtual /opt/stackstorm/st2 . Esto es necesario cuando se despliegan backends de autenticación o coordinación alternativos que dependen de módulos de Python para que funcionen. |
st2web | ||
st2web_version |
latest |
Versión de st2web a instalar. present para instalar el paquete disponible, latest para obtener actualizaciones automáticas o fijar a una versión numérica como 2.2.0 o con una revisión como 2.2.0-1 . |
st2web_ssl_certificate |
null |
Cadena con un certificado SSL personalizado (.crt ). Si no se proporciona, se generará un certificado autofirmado. |
st2web_ssl_certificate_key |
null |
Cadena con la clave secreta del certificado SSL personalizado (.key ). Si no se proporciona, se generará un certificado autofirmado. |
st2web_nginx_config |
null |
Cadena con un archivo de configuración personalizado de nginx (st2.conf ). Si no se proporciona, se usará el st2.conf por defecto. |
st2chatops | ||
nodejs_major_version |
14 |
La versión predeterminada se ajusta a st2chatops versión >= 3.5.0. |
st2chatops_version |
latest |
Versión de st2chatops a instalar. present para instalar el paquete disponible, latest para obtener actualizaciones automáticas o fijar a una versión numérica como 2.2.0 o con una revisión como 2.2.0-1 . |
st2chatops_st2_api_key |
Clave API de st2 que se actualizará en st2chatops.env usando "st2 apikey create -k" en una tarea. | |
st2chatops_hubot_adapter |
Adaptador Hubot que se usará para st2chatops. El predeterminado es shell , pero debe cambiarse a uno de los adaptadores soportados . [Requerido] |
|
st2chatops_config |
{ } |
Basado en el adaptador en st2chatops_hubot_adapter , proporcionar un hash para la configuración del adaptador, para actualizar st2chatops.env . Por ejemplo, para el adaptador de Hubot de Slack : st2chatops_config: HUBOT_SLACK_TOKEN: xoxb-CAMBIA-ME-POR-FAVOR |
st2chatops_version |
latest |
Versión de st2chatops a instalar. Usa latest para obtener actualizaciones automáticas o fijar a una versión numérica como 2.2.0 . |
Ejemplos
Instala la versión stable
más reciente de StackStorm con todos sus componentes en la máquina local:
ansible-playbook --inventory localhost, --connection local stackstorm.yml
Para instalar StackStorm en una máquina remota llamada stackstorm.example.com
, crea y referencia un inventario:
echo "stackstorm.example.com" > inventory
ansible-playbook --inventory inventory stackstorm.yml
Mantener la versión
latest
es útil para actualizar StackStorm volviendo a ejecutar el playbook, ya que reinstalará (actualizará) st2 cuando haya una nueva versión disponible.
Este es el comportamiento predeterminado. Si no deseas actualizaciones, considera fijar números de versión y revisión específicos.
Instala una versión específica de st2 con un número de revisión fijado:
ansible-playbook stackstorm.yml --extra-vars "st2_version=2.2.0 st2_revision=8"
Instalación detrás de un proxy
Si estás instalando detrás de un proxy, puedes usar las variables de entorno http_proxy
, https_proxy
y no_proxy
en el playbook. Para las pruebas de humo de st2, necesitarás desactivar el proxy para localhost.
environment:
http_proxy: http://proxy.example.net:3128
https_proxy: http://proxy.example.net:3128
no_proxy: 127.0.0.1,localhost
Desarrollo
Hay algunos requisitos a la hora de desarrollar sobre ansible-st2
.
Estas son las plataformas que debemos soportar (deben pasar pruebas de extremo a extremo):
- Ubuntu Focal (20.04)
- CentOS 7
- Rocky Linux 8
- RHEL 7 (a través de AWS)
- RHEL 8 (a través de AWS)
Los playbooks y roles deben soportar la idempotencia de Ansible. Es decir, volver a ejecutar el playbook stackstorm.yml
debe acabar con el resultado changed=0.*failed=0
(siempre que las versiones y revisiones estén fijadas).
Para el desarrollo local, hay un Vagrantfile disponible. Por defecto, el siguiente comando configurará una máquina virtual Ubuntu 20 (ubuntu/focal64
):
vagrant up
Otras distribuciones soportadas:
vagrant up ubuntu20
vagrant up centos7
vagrant up rockylinux8
Otros métodos de instalación
Quizás te interese otros métodos para desplegar StackStorm:
Gestión de Configuración
Instrucciones Manuales
Obtener ayuda
Si encuentras algún problema, nuestra comunidad está lista para ayudar, no dudes en:
- Hacer preguntas en nuestro canal público de Slack
- Reportar problemas, proporcionar solicitudes de funciones, o simplemente dar una ✮ estrella a este proyecto
¡Tus preguntas, comentarios y contribuciones son más que bienvenidos y muy apreciados!
Install StackStorm (IFTTT for Ops) with all the components like Web UI, ChatOps and dependant services including RabbitMQ, MongoDB, nginx.
ansible-galaxy install StackStorm.stackstorm