書きかけ。更新予定。
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
というイベント駆動型の自動化基盤に発展させやすい構成です。
