stackstorm安装

stackstorm安装

cd /opt/stackstorm/
[root@vm2 stackstorm]# ll
drwxr-xr-x 2 st2  root       6 May  6 02:41 configs
drwxr-xr-x 2 st2  root       6 May  6 02:41 exports
drwxr-xr-x 7 root root      80 Aug 13 18:45 mistral
drwxr-xr-x 2 st2  root       6 May  6 02:41 overrides
drwxr-xr-x 8 root root      85 Aug 13 21:56 packs
drwxr-xr-x 7 root root     100 Aug 13 18:17 st2
drwxr-xr-x 3 root root      19 Aug 13 22:09 static
drwxrwxr-x 3 root st2packs  17 Aug 13 21:56 virtualenvs

1、 用命令 getenforce 检查SELinux是否在Enforcing 模式

2、如果返回时Enforing,执行命令:
sudo yum install-y policycoreutils-python  # SELinux管理工具
sudo setsebool -P httpd_can_network_connect 1  #运行nginx访问网络
sudo semanage port --list| grep -q 25672 || sudo semanage port -a -t amqp_port_t -p tcp 25672 #运行rabbitmq使用端口25672

3、安装mongodb, rabbitmq和postgresql
说明: 当前st2支持mongodb版本是 3.4,mongodb 3.4版本支持st2.2.0以上。在1.6.0版本之前的仅仅支持mongodb 2.x。
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

获取最新的mongodb版本(3.4):
rpm --import https://www.mongodb.org/static/pgp/server-3.4.asc
vi /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

yum -y install crudini
yum -y install mongodb-org
yum -y install rabbitmq-server
systemctl start mongod rabbitmq-server
systemctl enable mongod rabbitmq-server

mongodb Dependency Installed:
mongodb-org-mongos.x86_64 0:3.4.24-1.el7
mongodb-org-server.x86_64 0:3.4.24-1.el7
mongodb-org-shell.x86_64 0:3.4.24-1.el7
mongodb-org-tools.x86_64 0:3.4.24-1.el7

rabbitmq Installed:
rabbitmq-server.noarch 0:3.3.5-34.el7
rabbitmq-server Dependency Installed:
erlang-asn1.x86_64 0:R16B-03.18.el7                   erlang-compiler.x86_64 0:R16B-03.18.el7
erlang-crypto.x86_64 0:R16B-03.18.el7                 erlang-erts.x86_64 0:R16B-03.18.el7
erlang-hipe.x86_64 0:R16B-03.18.el7                   erlang-inets.x86_64 0:R16B-03.18.el7
erlang-kernel.x86_64 0:R16B-03.18.el7                 erlang-mnesia.x86_64 0:R16B-03.18.el7
erlang-os_mon.x86_64 0:R16B-03.18.el7                 erlang-otp_mibs.x86_64 0:R16B-03.18.el7
erlang-public_key.x86_64 0:R16B-03.18.el7             erlang-runtime_tools.x86_64 0:R16B-03.18.el7
erlang-sasl.x86_64 0:R16B-03.18.el7                   erlang-sd_notify.x86_64 0:0.1-1.el7
erlang-snmp.x86_64 0:R16B-03.18.el7                   erlang-ssl.x86_64 0:R16B-03.18.el7
erlang-stdlib.x86_64 0:R16B-03.18.el7                 erlang-syntax_tools.x86_64 0:R16B-03.18.el7
erlang-tools.x86_64 0:R16B-03.18.el7                  erlang-xmerl.x86_64 0:R16B-03.18.el7
lksctp-tools.x86_64 0:1.0.17-2.el7

安装redis:
yum install -y redis
Installed:
redis.x86_64 0:3.2.12-2.el7
Dependency Installed:
jemalloc.x86_64 0:3.6.0-1.el
systemctl start redis
systemctl enable redis

安装postgresql:
yum -y install postgresql-server postgresql-contrib postgresql-devel
Installed:
postgresql-contrib.x86_64 0:9.2.24-8.el7_9
postgresql-devel.x86_64 0:9.2.24-8.el7_9
postgresql-server.x86_64 0:9.2.24-8.el7_9
Dependency Installed:
postgresql.x86_64 0:9.2.24-8.el7_9
postgresql-libs.x86_64 0:9.2.24-8.el7_9
uuid.x86_64 0:1.6.2-26.el7

初始化PostgreSQL:
sudo postgresql-setup initdb
确保本地有权限访问pgsql,配置pgsql通过md5加密方式进行通讯:
sudo sed -i "s/(host.*all.*all.127.0.0.1/32.)ident/\1md5/" /var/lib/pgsql/data/pg_hba.conf
sudo sed -i "s/(host.all.all.::1/128.)ident/\1md5/" /var/lib/pgsql/data/pg_hba.conf
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

启动PostgreSQL服务:
systemctl start postgresql
systemctl enable postgresql

4、下载stackstorm程序库
以下脚本将检测您的平台和体系结构并设置适当的StackStorm存储库。 它还将添加用于软件包签名的GPG**。
curl -s https://packagecloud.io/install/repositories/StackStorm/stable/script.rpm.sh | sudo bash
-->其实就是配置sackstorm yum源 /etc/yum.repos.d/StackStorm_stable.repo

cat /etc/yum.repos.d/StackStorm_stable.repo
[StackStorm_stable]
name=StackStorm_stable
baseurl=https://packagecloud.io/StackStorm/stable/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/StackStorm/stable/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[StackStorm_stable-source]
name=StackStorm_stable-source
baseurl=https://packagecloud.io/StackStorm/stable/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/StackStorm/stable/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

5、安装stackstorm组件库
sudo yum install -y st2 
#RabbitMQ、MongoDB、PostgreSQL如果服务应用在不同服务器上,只需要修改以下配置路径即可
RabbitMQ  在 /etc/st2/st2.conf 和/etc/mistral/mistral.conf
MongoDB 在 /etc/st2/st2.conf
PostgreSQL 在 /etc/mistral/mistral.conf

安装的所有包:
Installed:
  st2.x86_64 0:3.7.0-2                                                                                           

Dependency Installed:
  keyutils-libs-devel.x86_64 0:1.5.8-3.el7                 krb5-devel.x86_64 0:1.15.1-54.el7_9                  
  libcom_err-devel.x86_64 0:1.42.9-19.el7                  libffi-devel.x86_64 0:3.0.13-19.el7                  
  libkadm5.x86_64 0:1.15.1-54.el7_9                        libselinux-devel.x86_64 0:2.5-15.el7                 
  libsepol-devel.x86_64 0:2.5-10.el7                       libtirpc.x86_64 0:0.2.4-0.16.el7                     
  libverto-devel.x86_64 0:0.2.5-4.el7                      openssl-devel.x86_64 1:1.0.2k-25.el7_9               
  pcre-devel.x86_64 0:8.32-17.el7                          python-rpm-macros.noarch 0:3-34.el7                  
  python3.x86_64 0:3.6.8-18.el7                            python3-devel.x86_64 0:3.6.8-18.el7                  
  python3-libs.x86_64 0:3.6.8-18.el7                       python3-pip.noarch 0:9.0.3-8.el7                     
  python3-rpm-generators.noarch 0:6-2.el7                  python3-rpm-macros.noarch 0:3-34.el7                 
  python3-setuptools.noarch 0:39.2.0-10.el7                zlib-devel.x86_64 0:1.2.7-20.el7_9                   

Dependency Updated:
  krb5-libs.x86_64 0:1.15.1-54.el7_9   openssl.x86_64 1:1.0.2k-25.el7_9   openssl-libs.x86_64 1:1.0.2k-25.el7_9  
  zlib.x86_64 0:1.2.7-20.el7_9 

安装st2mistral:
yum install -y st2mistral
Installed:
st2mistral.x86_64 0:3.2.0-1
Dependency Installed:
libyaml.x86_64 0:0.1.4-11.el7_0


6、设置数据存储加密
Key-Value存储方案允许用户存储加密后的Value值。 这些值使用对称加密(AES256)进行存储:
DATASTORE_ENCRYPTION_KEYS_DIRECTORY="/etc/st2/keys"
DATASTORE_ENCRYPTION_KEY_PATH="${DATASTORE_ENCRYPTION_KEYS_DIRECTORY}/datastore_key.json"

mkdir -p ${DATASTORE_ENCRYPTION_KEYS_DIRECTORY}
st2-generate-symmetric-crypto-key --key-path ${DATASTORE_ENCRYPTION_KEY_PATH}

仅仅允许st2用户读取数据
chgrp st2 ${DATASTORE_ENCRYPTION_KEYS_DIRECTORY}
chmod o-r ${DATASTORE_ENCRYPTION_KEYS_DIRECTORY}
chgrp st2 ${DATASTORE_ENCRYPTION_KEY_PATH}
chmod o-r ${DATASTORE_ENCRYPTION_KEY_PATH}

设置密钥配置,生成一个加密密钥文件,并存放至指定位置。在配置文件中设置key的路径,:
crudini --set /etc/st2/st2.conf keyvalue encryption_key_path ${DATASTORE_ENCRYPTION_KEY_PATH}
st2ctl restart-component st2api

7、设置Mistral数据库

通过如下命令来设置Mistral PostgreSQL数据库:

# 在PostgreSQL中创建 Mistral数据库
cat << EHD | sudo -u postgres psql
CREATE ROLE mistral WITH CREATEDB LOGIN ENCRYPTED PASSWORD 'StackStorm';
CREATE DATABASE mistral OWNER mistral;
EHD
# 设置Ministral数据库表
/opt/stackstorm/mistral/bin/mistral-db-manage --config-file /etc/mistral/mistral.conf upgrade head
# 注册mistral动作
/opt/stackstorm/mistral/bin/mistral-db-manage --config-file /etc/mistral/mistral.conf populate | grep -v -e openstack -e keystone




8、配置SSH和SUDO
要运行本地和远程shell操作,StackStorm使用特殊的系统用户(默认为stanley)。对于远程Linux操作,使用SSH。建议在所有远程主机上配置基于公共**的SSH访问。我们还建议配置SSH访问localhost以运行示例和测试。
创建StackStorm系统用户,启用无密码sudo,并设置对“localhost”的ssh访问权限,以便可以在本地测试基于SSH的操作。
创建SSH系统用户 (默认stanley 用户已经存在)
useradd stanley
mkdir -p /home/stanley/.ssh
chmod 0700 /home/stanley/.ssh

生成SSH:
ssh-keygen -f /home/stanley/.ssh/stanley_rsa -P ""
授权key访问权限:
sh -c 'cat /home/stanley/.ssh/stanley_rsa.pub >> /home/stanley/.ssh/authorized_keys'
chown -R stanley:stanley /home/stanley/.ssh
开启无密码sudo(配置stanley执行sudo免密):
sh -c 'echo "stanley    ALL=(ALL)       NOPASSWD: SETENV: ALL" >> /etc/sudoers.d/st2'
chmod 0440 /etc/sudoers.d/st2

Make sure Defaults requiretty is disabled in /etc/sudoers
sed -i -r "s/^Defaults\s++?requiretty/# Defaults +requiretty/g" /etc/sudoers

在StackStorm将通过SSH运行远程操作的远程主机上配置SSH访问并启用无密码sudo。 使用上一步中生成的公钥,按照配置SSH中的说明操作。 要控制Windows框,请为Windows runner配置访问权限。
如果使用的是其他用户或SSH密钥的路径,则需要在/etc/st2/st2.conf中修改此部分:
[system_user]
user = stanley
ssh_key_file = /home/stanley/.ssh/stanley_rsa

启动服务:
启动stackstorm服务: 
st2ctl start
注册sensors,rules, actions: 
st2ctl reload

9、验证服务
验证stackstorm是否安装成功:
# st2 --version
st2 3.7.0, on Python 3.6.8

遍历核心包的所有动作:
st2 action list --pack=core

# 本地执行一个shell命令:
st2 run core.local -- date -R
 
# 查看命令执行结果:
st2 execution list
 
# 通过ssh远程执行命令(无密码sudo)
st2 run core.remote hosts='localhost' -- uname -a
 
# 安装包:
st2 pack install st2

#st2ctl相关的控制命令
#st2ctl start|stop|status|restart|restart-component|reload|clean

 

posted @ 2022-08-15 00:15  Sky-wings  阅读(187)  评论(0编辑  收藏  举报