はじめに
4回に渡ってお送りしてきたStackStormを使ったサポート作業の自動化ですが、うっかりWorkflowの紹介をしていませんでした。
背景と目的
背景
StackStormでAnsible Packを無事使えるようになりました。今回はStackStormの全体のWorkflowを紹介します。
目的
ログインと設定ファイル作成の手間を省き、GUIで作業できるようにStackStormをフロントエンドとして立ち上げていきます。
今回やること
- StackStormのWorkflowの作成
今回はやらないこと
- 独自Dockerイメージの作成
手順
1. メタデータ
まずはメタデータファイルを作成します。
ここではDB立ち上げに使う変数を定義しています。
今回はコンテナ名、DBアクセス用のTCPポート番号、取り込むDumpファイルがおいてあるパスを変数として扱います。
メタデータは/opt/stackstorm/packs/<mypack>/actions
に通常配置しますが、
今回はコンテナにマウントしているため、/home/kannosan/<mypack>/actions
に配置します。
name: createSQL
enabled: true
pack: rcpsupport
entry_point: 'workflows/createSQL.yaml'
runner_type: "mistral-v2"
parameters:
container_name:
type: "string"
required: true
db_port:
type: "string"
required: true
folder_path:
type: "string"
required: true
2. Workflow
処理の実態となるWorkflowを記載したファイルを作成します。
今回はWorkflowと言いながら、シングルアクションになっています。
処理自体は単純にAnsibleのPlaybookを呼び出し、そちらでコンテナ作成、DB立ち上げをさせています。
このときAnsibleのPlaybookはコンテナから見たパスとなるので、
ローカルホストのパスではなくコンテナにマウントされたパスとなることに気をつけてください。
こちらのファイルは/opt/stackstorm/packs/<mypack>/actions/workflows
に通常配置しますが、
やはりコンテナにマウントさせるため、/home/kannosan/<mypack>/actions/workflows
に配置します。
---
version: '2.0'
rcpsupport.createSQL:
input:
- container_name
- db_port
- folder_path
tasks:
createSQL:
action: ansible.playbook
input:
playbook: /root/ansible-playbook/create_sql_container.yml
extra_vars:
- container_name="<% $.container_name %>"
- port="<% $.db_port %>"
- base_path="<% $.folder_path %>"
以上のファイルを作成し、コンテナのStackStormを立ち上げるとStackStormのWeb GUIにWorkflowが登録されているはずです。
あとは問い合わせが来たら、適宜、名前・ポート番号・貰ったファイルパスを入れるとDBが立ち上がります。
まとめ
これまで問い合わせがあってからDB立ち上げにコマンドを毎回打って30分位拘束されていました。
これを利用するようになり、コマンド打って待っていればDBが立ち上がっているので、拘束時間は5分程度に短縮されました。
そこそこ効果があったと自負しています。
今回は自動化の基盤の構築+DB立ち上げのタスクの自動化をお届けしました。
まだまだ、自動化できるタスクはあるので、自動化が実現できたらまたご紹介していきたいと考えています。