stackstorm 0.stackstorm组成,服务与架构

1 StackStorm组成 


StackStorm环境中的插件是通过扩展传感器和动作实现。

1) Sensors


是用于内部或外部集成的Python插件,该插件可以接受到个自的事件。
当一个外部系统的事件发生时,该事件可以被一个sensor处理,一个StackStorm
的trigger触发器将会发射到系统中。

2) Triggers


是StackStorm中外部事件的表现。有通用的triggers(例如:timers, webhooks)
和集成的triggers(例如: Sensu alert, JIRA问题更新)。一个新的trigger类型可以
通过编写一个sensor插件来定义。

3) Actions


是StackStorm外部集成。有一般的actions(ssh, REST调用),intergrations(
OpenStack, Docker, Puppet),或者定制化actions。
Actions要么是Python插件,或者是任何脚本,通过添加几行代码到metadata中来被StackStorm
消费。Actions可以被用户通过命令行或者API直接调用,或者作为rules和workflows的一部分被使用。

4) Rules


映射triggers到actions(或者workflows),应用匹配的criteria和映射
trigger payload到action输入。

5) Workflows


将actions组装到uber-actions,定义顺序,转换条件,
并传递数据。大多数自动化不止一步,因此需要不止一个action。
Workflows,就像原子actions,可以在Action库中获取,可以被手动调用或者
被规则触发。

6) Packs


是内容步数的单元。它们简化了管理并通过分组集成(
triggers和actions
)和自动化(rules和workflows)来共享StackStorm插件化内容。
大量packs可以从
https://exchange.stackstorm.org/
获得。用户可以创建他们自己的packs,在Github上共享它们,
或者提交到StackStorm的Exchange。

7) Audit trail


审计跟踪动作执行,手动或自动化的触发上下文和执行结果被记录和存储。
它也可以在audit日志终被布或到,用于集成到外部日志系统和分析工具:
LogStash, Splunk, statsd, syslog。


2 StackStorm各个服务

2.0 stackstorm架构

架构如下所示

../_images/st2-deployment-big-picture.png


2.1 St2服务


st2服务提供StackStorm主要功能,位于/opt/stackstorm/st2,
共享一个通过/etc/st2/st2.conf进行配置专用的Python虚拟环境。

1 st2 services

- st2sensorcontainer运行/opt/stackstorm/packs目录下的传感器。它管理将在一个节点上运行的传感器,可以对它进行启动、停止和重启操作。

- st2rulesengine在收到TriggerInstance时将对规则评判,并决定是否执行ActionExecution请求。它需要访问MongoDB来定位规则,而RabbitMQ侦听TriggerInstance和ActionExecution请求。此过程的另外用途是执行所有定义的定时器。

- st2actionrunners通过各种Action执行器运行/opt/stackstorm/packs下的包含的action包。执行器可能需要一些针对特定执行器的配置,例如需要配置SSH才能运行基于remote-shell-runner和remote-command-runner的远程action。而对于Windows需要先准备好Windows的执行器。详情见执行器(Runner)。

- st2resultstracker通过调用Mstral API端点,跟踪长时间运行的工作流的执行情况。

- st2notifier在ActionExecution执行完成时TriggerInstances产生st2.core.actiontrigger和st2.core.notifytrigger。另外一个目的是充当action的备份调度器,处理哪些可能未列入计划的action。

- st2garbagecollector是一个可选的服务,可以根据在/etc/st2/st2.conf中设置的参数,周期性地从数据库中删除那些老旧的执行历史数据。

- st2auth是一个支持终端REST的认证服务。后端可用各种的认证方法,有关详细信息,请参阅身份验证(Authentication)。参考部署后端认证是使用平面文件(flat file)。

- st2api 是用于CLI和Web UI的REST API Web服务端点。它还为webhook提供webhook触发器。

- st2stream 是一个HTTP消费端的事件流,发布了各种有用的事件。这些事件由Webui和Hubot消费,如Chatps更新结果等。

 

2.2 st2client


- st2client是CLI和通过StackStorm API绑定的Python。要将CLI配置成能指向正确的API,请使用身份验证选项、禁止对自签名证书的不安全警告以及其他方便方式,请参阅CLI参考(CLI Reference)。st2client与st2一起发行,也可以独立安装。

2.3 st2mistral


- st2mistral Mstral是StackStorm为长时间执行的工作流使用的工作流服务组件。它被打包为st2mistral,安装在/opt/stackstorm/mistral下,在一个专门的Python虚拟环境中运行,并通过/etc/mistral/mistral.conf进行配置。
  mistral-server运行工作流逻辑和调用action,向st2api提供action的执行请求。st2mistral是一个随着stackstorm扩展的mstral插件。
  mistral-api是由st2actionrunner和st2notifier访问的内部端点。在单台部署方式中,它只能限于localhost主机。

2.4 NGINX的WebUI和SSL

 

- nginx提供SSL终结,将HTTP重定向到HTTPS,为WebUI静态组件服务,并为RESTAPI端点到st2*的Web提供反向代理服务。

- StackStorm WebUI包括st2web、Workflow Designer、eXtreme Workflow Composer,安装在/opt/stackstorm/static/webui,通过webui/config.js配置。st2web内置了它自己的deb 和rpm包。Workflow Designer是作为bwc-enterprise软件包的一部分部署的,是HTML 5应用程序,充当静态HTML,并调用StackStorm的st2auth和st2api的RESTAPI端点。Nginx代理st2api和st2auth服务的/api和/auth的入站请求。

2.5 st2chatops 


– ChatOps组件StackStorm的Chatops组件是Hubot、st2的Hubot适配器、连接到不同聊天服务的插件。它们打包为st2chatops,安装在/opt/stackstorm/chatops/,在/opt/stackstorm/chatops/st2chatops.env文件中配置。还可以通过在已有Hubot实例上安装hubot-stackstorm plugin插件来启用ChatOps。

依赖软件必须的依赖软件包括RabbitMQ、MongoDB、PostgreSQL,可选的依赖软件如下:
- nginx用于SSL终结、反向代理API端点和服务- 并发策略(Policies)使用的Redis或者Zookeeper
- Extreme Workflow Composer中LDAP认证的LDAP

参考:
[1] https://docs.stackstorm.com/overview.html
[2] https://www.jianshu.com/p/170cc4e7739a
[3] https://docs.stackstorm.com/install/overview.html
 

### 回答1: StackStorm是一个开源自动化工具,用于创建、管理和执行工作流和自动化任务。Docker Compose是一个工具,用于定义和运行多个Docker容器的应用程序。StackStorm提供了一个Docker Compose配置文件(docker-compose.yaml),用于快速部署StackStorm服务。 这个docker-compose.yaml文件中包含了StackStorm的各个组件的配置信息。首先,它定义了要使用的基础镜像,如StackStorm工作者(worker)和队列服务(rabbitmq)。然后,它指定了各个容器的名称、端口映射和网络配置。 在docker-compose.yaml文件中,还定义了stackstorm服务容器的环境变量,用于指定配置参数,如数据库连接、日志级别等。此外,还可以定义其他容器的环境变量,以满足不同组件的需求。 通过运行docker-compose命令,可以根据这个配置文件来创建和启动StackStorm服务容器。Docker Compose会自动解析和处理配置文件中的依赖关系,并按照定义的顺序启动容器。这可以让我们快速部署和管理StackStorm服务,并且方便地进行扩展和升级。 总之,StackStorm的docker-compose.yaml文件是用来定义和管理StackStorm服务容器的配置文件。它提供了一种简便的方式来部署和管理StackStorm,使得自动化工作流和任务的创建和执行更加方便和高效。 ### 回答2: StackStorm 是一个开源自动化平台,可以用于自动化各类任务和流程。Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。一般来说,使用 Docker Compose 可以轻松地将 StackStorm 部署到 Docker 容器中。 stackstorm docker-compose.yaml 是一个用于在 Docker Compose 中定义 StackStorm 的配置文件。这个文件包含了 StackStorm 中的各个组件以及它们的配置。在编写这个文件时,我们可以指定 StackStorm 需要运行的容器数量、容器之间的依赖关系等。 通常,stackstorm docker-compose.yaml 包含以下几个部分: 1. Services 部分:这里定义了 StackStorm 中的各个组件的容器。比如,可以指定一个容器运行 StackStorm Web UI,另一个容器运行 StackStorm 后台服务,还可以有其他的容器用于运行 StackStorm 的数据库、消息队列等。 2. Networks 部分:这里定义了容器之间的网络连接方式。可以指定容器使用的网络模式,如桥接模式或者主机模式,以及容器之间的连接关系。 3. Volumes 部分:这里定义了容器中的数据卷。可以将 StackStorm 需要的数据持久化保存到宿主机上的指定目录,以便容器重启后能够恢复数据。 通过编写 stackstorm docker-compose.yaml 文件,并使用 Docker Compose 工具进行部署,可以快速搭建 StackStorm 环境,并保证该环境的可复制性和可移植性。同时,使用 Docker Compose 也方便了 StackStorm 的管理和维护工作,简化了容器之间的依赖关系管理。 ### 回答3: StackStorm是一个开源的自动化平台,它允许用户将不同的任务组织成工作流,并通过事件触发来自动化执行。Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。 在StackStorm中使用Docker Compose,可以帮助我们更方便地部署和管理StackStorm的相关容器和服务。通过编写docker-compose.yaml文件,我们可以定义StackStorm容器的配置和依赖关系。 Docker Compose使用一种声明性的语法来定义应用程序的配置。在docker-compose.yaml文件中,我们可以指定StackStorm容器的镜像、环境变量、端口映射等配置。我们还可以定义其他依赖容器,例如数据库容器,用于支持StackStorm的运行。 以下是一个示例的docker-compose.yaml文件的片段: ``` version: '3.8' services: stackstorm: image: stackstorm/stackstorm:3.3.0 ports: - 443:443 - 80:80 environment: - ST2_VERSION=3.3.0 - ST2_AUTH_USERNAME=admin - ST2_AUTH_PASSWORD=MyPassword depends_on: - postgres postgres: image: postgres:12 environment: - POSTGRES_USER=stackstorm - POSTGRES_PASSWORD=stackstorm ``` 在这个示例中,我们定义了两个服务stackstorm和postgres。stackstorm服务使用了stackstorm/stackstorm:3.3.0镜像,将443端口和80端口映射到宿主机。我们还指定了一些环境变量,用于配置StackStorm的版本和管理员账号密码。在depends_on部分,我们指定了stackstorm服务依赖于postgres服务。 通过运行docker-compose up命令,Docker Compose将会根据docker-compose.yaml文件创建并启动相应的容器。这样,我们就能够方便地使用Docker Compose来部署和管理StackStorm的相关容器和服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值