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.

E2E Tests Repository deb/rpm Join our community Slack

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:

Obtener ayuda

Si encuentras algún problema, nuestra comunidad está lista para ayudar, no dudes en:

¡Tus preguntas, comentarios y contribuciones son más que bienvenidos y muy apreciados!

Acerca del proyecto

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

Instalar
ansible-galaxy install StackStorm.stackstorm
Licencia
apache-2.0
Descargas
624.6k
Propietario
Event-driven automation. Used by Netflix & many more....