StackStormで自動化を試してみる

書きかけ。更新予定。

StackStorm Docker Compose取得

git clone https://github.com/StackStorm/st2-docker.git
cd st2-docker

公式 Docker 構成です。


StackStorm起動

そのまま起動できます。

docker compose up -d

起動確認:

docker compose ps

コンテナ一覧:

docker ps

以下のようなコンテナが起動します。

  • MongoDB
  • RabbitMQ
  • Redis
  • st2api
  • st2auth
  • st2web
  • st2actionrunner
  • st2scheduler
  • st2workflowengine

など。


Web UIアクセス

ブラウザで

http://サーバIP/

へアクセスします。

初期アカウント:

User: st2admin
Pass: Ch@ngeMe

公式デフォルトです。


StackStorm CLIログイン

CLIコンテナへ入ります。

docker compose exec st2client bash

認証:

st2 login st2admin

動作確認:

st2 action list

Ansible Packインストール

StackStorm の Pack を導入します。

st2actionrunnerにインストールに必要なパッケージ等の環境を整えます

docker compose exec st2actionrunner bash
pwd
 /opt/stackstorm
source virtualenvs/ansible/bin/activate
pip install --upgrade pip
pip install ansible
apt update -y
apt install -y \
    gcc \
    g++ \
    make \
    python3-dev \
    libkrb5-dev
pip install pykerberos

CLIコンテナ内で:

docker compose exec st2client bash
st2 pack install ansible

確認:

st2 action list --pack=ansible

利用可能な Action が表示されます。


Ansible実行環境準備

Ansible Pack は実際には StackStorm コンテナ内で ansible-playbook を実行します。

確認:

docker compose exec st2actionrunner bash
source virtualenvs/ansible/bin/activate
ansible --version

もし入っていない場合:

pip install ansible

もしくは Dockerfile をカスタマイズします。


SSH鍵配置

例えば Linux サーバ群を操作する場合。

mkdir -p /opt/stackstorm/keys

ssh-keygen -t ed25519

秘密鍵を

/opt/stackstorm/keys/id_ed25519

に配置。

docker-compose.yml にマウント追加:

volumes:
- /opt/stackstorm/keys:/keys

Inventoryとplaybookの作成

例:

mkdir -p /opt/stackstorm/ansible

inventory

[web]
192.168.1.100

[db]
192.168.1.110

playbook

---
- hosts: all
become: yes

tasks:
- name: hostname
command: hostname

StackStormから実行

st2 run ansible.playbook \
playbook=/opt/stackstorm/ansible/test.yml \
inventory_file=/opt/stackstorm/ansible/inventory

実行結果確認:

st2 execution list
st2 execution get <ID>

自動化ルール作成

例えば Webhook で Ansible を起動。

Rule例:

---
name: deploy_web
pack: local

trigger:
type: core.st2.webhook
parameters:
url: deploy_web

action:
ref: ansible.playbook
parameters:
playbook: /opt/stackstorm/ansible/deploy.yml
inventory_file: /opt/stackstorm/ansible/inventory

登録:

st2 rule create deploy_web.yaml

実行:

curl http://stackstorm/api/v1/webhooks/deploy_web

実運用向け推奨構成

開発・検証段階:

Ubuntu24.04
└ Docker
└ StackStorm
├ MongoDB
├ RabbitMQ
├ Redis
├ st2api
├ st2web
└ Ansible Pack

本番段階:

GitLab
↓ Webhook
StackStorm

Ansible

Linux Server群

Kubernetes

Docker/Podman

ユーザーの既存スキル(GitLab Runner、Docker、Podman、Kubernetes、Python)との相性も非常に良く、特に

  • GitLab CI → StackStorm Webhook
  • StackStorm → Ansible
  • Ansible → Kubernetes / Docker / Linux

というイベント駆動型の自動化基盤に発展させやすい構成です。

タイトルとURLをコピーしました