情報畑でつかまえてロゴ
本サイトは NTTテクノロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

StackStormによる運用業務の改善

近年注目されているOSS製自動化ツールであるStackStormについて、運用業務の効率化に役立つ機能とそのユースケースを紹介します。

はじめに

NTTテクノクロスの萬治です。

みなさんは、StackStormというOSS製品をご存知でしょうか?

NTTテクノクロスでは、開発/運用業務を効率化するために、CI/CDを始めとする開発/運用手順のコード化について取り組んでいます。

上記を実現するための自動化ツールは数多くありますが、弊社ではその中でも「StackStorm」という自動化ツールに注目しており、 StackStormを用いて

・NW環境を含めた物理環境構築
CI/CDパイプラインの実装、運用効率化

についての検証を行なっています。

今回の記事では、それらの取り組みで得た知識を基に

・運用ノウハウがチーム内で分散している
・運用業務改善のためのデータ収集などが難しい

という「システムの運用業務に関する課題」をStackStormによって解決する方法についてご紹介します。

記事の構成としては、

・StackStormの紹介
・運用業務の効率化について

となります。

StackStormについて

StackStormという製品について聞き慣れない方も多いと思いますので、
まずはStackStormの概要と特徴についてご紹介します。

StackStormの概要

StackStorm-Logo

StackStormとは、「Event Driven Automation Engine」をコンセプトにしたOSS自動化プラットフォームです。
日本語で噛み砕くと、「外部からなんらかのイベント通知を受け取ることで、あらかじめ決められた動作手順を実行する」プラットフォームといえます。

IFTTTを運用の世界に持ってきた」と例えられることが多く、
IFTTTをご存知の方ならイメージしやすいかと思います。
IFTTTで「ブログの投稿をトリガーにFacebookに通知する」ことが簡単に実現できるのと同じように、
「監視基盤のアラートをトリガーに復旧手順を実行する」というような動作を簡単に実現することが可能です。

StackStormの自動化ターゲットについて、公式サイトでは以下のように紹介されています。

・システムの自動復旧
・ChatOps
・CI/CD

比較的歴史の浅い製品ですが上記を実現するための機能はしっかり揃っており、
上記以外にも何らかの作業を自動化したいときに参考になる情報が公式ブログで数多く公開されています。

次に、StackStormの特長についてご紹介します。

StackStormの特長

StackStormの特徴として、以下が挙げられます。

・Workflowの作成難易度が低いこと
・Workflowの可読性や再利用性が高く、作成しやすいこと
・WorkflowやActionを役割ごとに整理可能で、管理しやすいこと

それぞれについて、どのように実現されているかを説明します。

前提

説明の前提として、StackStormで使われるWorkflowとAction、そしてMetadataという用語の説明を以下にまとめました。

Workflow

実行する手順が示されたファイル。
タスクとそれぞれのタスクの実行順序を記述する。

Action

bash, pythonなどで記述されたスクリプトファイル。
主にWorkflowのタスクとして実行される。

Metadata

Workflow、Actionの名前、説明、引数定義などが記述されているファイル。
WorkflowやActionとセットで作成する必要がある。


Workflowの説明で言及したタスクとは、Workflow内に書かれる手順の実行単位を指します。

タスクには

・name : タスクにつける任意の名前。Workflow内で一意でなければならない。
・ref : どんな操作を実行するか。ActionもしくはWorkflowを指定する。
parameters : ActionもしくはWorkflowに渡す引数。
publish : タスク後に定義したい変数。他のタスクから参照可能。

などを指定します。

上記の前提を置いて、冒頭に紹介したそれぞれの特徴について説明します。

Workflowの作成難易度が低いこと

Workflowにはタスクとその実行順序のみが記述され、具体的な処理の内容などは記述されません。
また、metadataによってWorkflowやActionの引数定義、動作内容などが管理されているため、タスクの記述時に実コードを意識する必要がありません。

プログラム言語の読解スキルをほとんど必要とせずWorkflowを記述できるということであり、Workflowの作成難易度は低いと言えます。

Workflowの可読性や再利用性が高く、作成しやすいこと

既存のWorkflowそのものを1つのタスクとして扱うことができるので、タスク数の多いWorkflowを別ファイルとして分割したり、汎用的な手順をWorkflowとしてまとめることができます。

この機能によって、Workflowの可読性や再利用性が向上します。

WorkflowやActionを役割ごとに整理可能で、管理しやすいこと

Packという仕組みによって上記のWorkflowやAction、それらの metadataを役割ごとにまとめ、管理することができます。

Packの実体は単純なディレクトリであるため、StackStormサーバ上のWorkflowなどを直接編集する際も目的のファイルを探しやすいという特徴があります。

また、PackのディレクトリをGitサーバ上に配置することで簡単にWorkflowやActionの再配布が可能なため、チーム内外での共有に便利です。

Packの共有が容易であることを活かした例として、有志が様々な目的に対応したPackをコミュニティに公開しています。

公開先: StackStorm Exchange (https://exchange.stackstorm.org/)

Gitで公開されているPackであれば、手元のStackStormへ1コマンドでインポートすることができます。

StackStormによる運用業務の改善

さて、本題の「StackStomによる運用業務の改善」についてお話しします。

システム運用の現場では、よく以下のような課題が挙げられます。

・チームや拠点ごとに運用ノウハウが分散していたり、属人的な独自ツールが存在している
・運用業務を効率化したいが、定常業務やトラブルの種類ごとにどれだけ対応時間がかかっているかなどのデータが不足している

上記のような問題は、StackStormを用いて改善できる可能性があります。

それぞれについて、どのようにStackStormをあてはめればいいかを解説していきます。

StackStormによる運用ノウハウの集約 & 改善

StackStormによって運用手順や実行契機が管理されていれば、それをPackとして集約し、拠点間で共有するルールを作ることで1つ目の問題を解決することが可能です。


また、独自ツールについてもmetadata使用方法を整理し共有することで、属人化を解消することができます。

Packを各拠点間で共有するときにGitサーバを用いることで、運用手順や各ツールを継続的に改善、共有(いわゆるCI/CD)するような業務フローを構築することもできるので、いいことずくめです。

StackStormによる運用業務の分析

StackStormでは、WorkflowやActionの実行履歴を一元管理することができます。


実行契機、実行時間なども履歴の中に含まれているので、「どんなときに」「どれくらいの時間をかけて」「どんなことをした」という情報を集約することで、業務分析に役立てることができます。

実行履歴はAPIによってJSON形式で取得したり、Excel Pack(https://github.com/StackStorm-Exchange/stackstorm-excel)によって単一ファイルにまとめられるので、外部の分析システムとの連携や資料化などを労力をかけずに実現することができます。

参考: 既存手順のWorkflow化について

既存の運用手順をWorkflowに移植することについて、手間がかかるのではないかと不安に思う方も多いと思います。

StackStormでは既に以下のような製品に対応するPackがコミュニティから提供されているので、場合によってはほとんど手間をかけずにWorkflowを作成することが可能です。

・監視基盤からのイベント取得: sensu, nagios, datadogなど

・サーバの構成管理: Ansible, SaltStackなど

・NW機器の操作: napalm

・通知: slack, mailgun, IRC

各Packはコミュニティベースで継続的に開発されており、品質の改善や機能追加も活発に行なわれています。

上記のような製品を使った業務手順を独自ツールとして実装している場合、紹介したようなPackを組み合わせてStackStormのWorkflowとして実装しなおすことで、可読性やメンテナンス性などの品質を向上させられる可能性があります。

・前任から引き継がれた独自ツールの読解、保守が大変

・独自アプリを依存アプリのバージョンアップに追従させるのが大変

・各処理のエラー処理などに問題がある

などの問題でお困りの方は、コミュニティ公開PackによるWorkflowでの再実装によって問題を解決できるかもしれません。

おわりに

StackStormの紹介と、運用業務の改善についてお話ししました。

今回の記事では触れませんでしたが、StackStormの真骨頂は運用業務の自動化にあります。
そちらについても、機会があれば記事にしたいと思います。


StackStormによる運用業務改善についてご意見、ご要望がございましたら、NTTテクノクロスまでお気軽にご相談ください。

参考

・StackStorm Docs: https://docs.stackstorm.com/index.html
→ 具体的なWorkflow, Actionの作り方など

・Auto-Remediation Defined: https://stackstorm.com/2015/08/07/auto-remediation-defined/
→ StackStorm公式による、自動復旧の実現についての紹介

連載シリーズ
テクノロジーコラム
著者プロフィール
萬治 渉
萬治 渉