CodeZine(コードジン)

特集ページ一覧

StackStormで始める運用自動化 ~入門編~

StackStorm入門(1)

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

内部アーキテクチャ

 ここでは、実際にStackStormを使ってみようと思っている方向けに、StackStormがどのような仕組みでどのように動作するかについて解説します。

 以下は、StackStormがイベントを処理する一連の処理の流れを表した図になります。

イベント処理の流れ
イベント処理の流れ

 StackStormのIFTTT×Workflow処理の内部はSensor、TriggerそしてAction(Workflow)の3つの要素から構成されています。そして、これら3つの要素を機能ごとにまとめたソフトウェアモジュールのことをpackと呼びます。StackStormでは動的にpackを追加・削除できる拡張性の高い機構になっています。

 ここではpackの内部コンポーネントがどのような役割でどのように動作するかについて解説します。

 まず、Sensorは外部で発生したイベントを監視するプロセスで、外部のイベントを検知した際には、紐付けられたTriggerにイベントを通知(以降では"Triggerを引く"と表現)します。

 Actionは、HTTPリクエストを送るメールを送るといった特定の目的に特化した処理を行うプロセスでTriggerに紐付けられます。そしてTriggerはSensorから通知された外部イベントをActionが扱いやすい形に正規化します。Triggerに紐付くActionが何も設定されていない状態では、SensorがTriggerを引いても何も起こりません。

 ここで各要素の関連について、もう少し詳しく解説します。

 SensorとTriggerは静的に紐付けられている(図の青枠)のに対して、TriggerとActionはユーザによって動的に紐付けられます(図の緑枠)。このTriggerとActionを紐付ける仕組みのことをRuleと呼びます。

 Ruleには2つの役割があります。1つは上述したTriggerとAction/Workflowを紐づける役割で、もう一つがTriggerパラメータとActionパラメータを変換する役割です。

 StackStormではTriggerとActionはそれぞれ独立しており、Ruleによって任意にTriggerとActionを組み合わせることができます。その際、Triggerから渡されるどのパラメータを抽出し、どういったパラメータをActionに渡すかの設定をRuleに記述します。

 最後にActionと併記されているWorkflowについて解説します。

 Workflowは複数のActionを記述できるActionになります。Actionと同じように、Ruleに紐付けられたTriggerが引かれた際に実行されます。ActionとWorkflowの違いは、Actionが特定の目的に特化した処理を記述したプログラムコードであるのに対して、Workflowは実行する1つ以上のActionと、それらの依存関係および各Actionの実行結果に応じた処理の流れを記述した定義になります。

 ユーザはプログラムコードを記述せずに、Actionの実行順序や処理の流れの定義したWorkflowを記述することで、複数のアプリケーションサービスを跨いだ複雑な処理を実現できます。またTriggerと紐付けたRuleを記述することで、それらを自動化させることができます。

StackStormのインストール

 公式ドキュメントのInstallationに沿って、一般にオールインワン(All-in-one)と呼ばれるStackStormの全サービス、および関連するすべてのミドルウェアを1つのノードにインストールする方法を紹介します。

 ノードはVagrantで用意します。Vagrant自体のインストール方法については、過去の記事で詳しく解説されているので、そちらをご参照ください。

 まずは以下のコマンドでVagrantfileを作成します。ここでは公式ドキュメントのSystem Requirementsに沿ってUbuntu 14.04のVMを作成します。

$ vagrant init ubuntu/trusty64

 ノードのメモリサイズが小さいとリソース不足でビルド処理が失敗することがあるため、以下のとおりVagrantfileを編集し、仮想CPUコア数と割り当てるメモリサイズを変更します。また、後述する冗長構成なStackStorm環境の構築のため、仮想NICの設定追加も併せて行います。

--- Vagrantfile.orig	2016-11-16 19:06:55.000000000 +0900
+++ Vagrantfile	2016-11-28 14:46:04.000000000 +0900
@@ -27,6 +27,8 @@
   # Create a private network, which allows host-only access to the machine
   # using a specific IP.
   # config.vm.network "private_network", ip: "192.168.33.10"
+  config.vm.hostname = "st2-node"
+  config.vm.network "private_network", ip: "192.168.0.100"
 
   # Create a public network, which generally matched to bridged network.
   # Bridged networks make the machine appear as another physical device on
@@ -50,6 +52,10 @@
   #   # Customize the amount of memory on the VM:
   #   vb.memory = "1024"
   # end
+  config.vm.provider "virtualbox" do |vb|
+    vb.cpus = 2
+    vb.memory = "2048"
+  end
   #
   # View the documentation for the provider you are using for more
   # information on available options.

 編集後、以下のコマンドを実行しVMを構築します。

$ vagrant up

 続いて以下のコマンドでVMにログインします。また以降の操作は、ログインしたVM内で実行します。

$ vagrant ssh

 最後にStackStormのインストールコマンドを実行します。引数で渡している--user--passwordは、初期アカウントのユーザ名とパスワードになり、任意の値を設定できます。

$ curl -sSL https://stackstorm.com/packages/install.sh | bash -s -- --user=st2admin --password=password

 以下の出力が得られれば、インストールは成功です。

StackStorm All-in-Oneインストール実行結果
StackStorm All-in-Oneインストール実行結果

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:StackStorm入門

著者プロフィール

  • 大山 裕泰(株式会社DMM.comラボ)(オオヤマ ヒロヤス)

    DMM.com ラボ所属ソフトウェアエンジニア。アリエル・ネットワーク株式会社、グリー株式会社を経て現在に至る。最近は主にインフラ基盤の構築、運用、機能開発を行う。共著書に「次世代ネットワーク制御技術 OpenFlow入門」がある。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5