ChatOps事始め!まずはHubotとSlackを連携させて、返事をさせてみよう

By • 2017-06-13 • Cloud, Development, DevOps

DevOpsをチーム開発に取り入れ、実践できているチームはどのくらいあるのでしょうか。

「まだ取り入れていない」「一部だけ取り入れて実践している」「すでに実践している」など現場によって様々でしょう。ご存じの方も多いと思いますが、数年前から ChatOps という言葉が流行り始めました。ChatOpsもDevOpsの実践方法のひとつといえます。それでは、ChatOpsはどのように構築すればいいのでしょうか?

この記事では、ChatOpsを実践したいエンジニアの方のために、ChatOpsの概要を説明した後で、簡単な導入方法を解説していきます。ぜひご一読して、ChatOpsへと一歩踏み出しましょう。
(トラックパスは、ChatOpsの代表的なサービスである「Slack」や「Chatwork」に対応しています)

ChatOpsとは何か?

ChatOpsは、チャットを使って、プロジェクトに必要なタスクを行うDevOpsの実践方法のひとつです。これまで、チャットはコミュニケーションや情報共有の手段として利用されてきました。その特徴を活かし、チャット上でタスクの実行までやってしまおう、というのがChatOpsの考え方です。チャット上でタスクを実行することで、誰が、いつ、どんなタスクを行ったかが自然に履歴として残ります。これにより、問題発生時の原因の特定にも役立ちます。

HubotとSlackでChatOpsを構成する

ChatOpsは概念のため、実践するには何らかのツールの助けが必要です。ここでは、よく使われているHubotとSlackの組み合わせを説明します。Hubotは、GitHub社が開発した、オープンソースのボットフレームワークです。チャットシステム自体は自分でタスクを実行できないため、チャットを介して、ボットにコマンド実行などのタスクを依頼します。そのボットを作るためにHubotを利用します。そして、チャットシステムとしてSlackを使います。Slackは、最近人気を集めているチャットサービスです。パソコン、スマホ、タブレット、どのブラウザからでも使えるため、環境を選びません。もちろん、Hubotとの相性もバッチリです。

HubotとSlackを連携して返事をさせてみよう

*Node.jsのインストール

HubotはNode.js上で実行されるため、まずはNode.jsをインストールする必要があります。まだインストールしていない方は、下記のURLからLTS版をインストールしてください。

Node.jsのインストール:https://nodejs.org/ja/

*Yeomanとジェネレーターのインストール

次に、コマンドラインを開き、下記のコマンドを使って、Yeomanとジェネレーターをインストールします。Yeomanを使うことで、簡単にHubotのテンプレートを作成できます。

npm install -g yo generator-hubot

*Hubotプロジェクトの作成

次に、先ほどインストールしたジェネレーターを使って、Hubotのプロジェクトを作成します。任意のフォルダを作成し、下記のコマンドを入力しましょう。なお、nameにはボットの名前、descriptionには説明、ownerには所有者を適宜入力してください。

mkdir hellobot
cd hellobot
yo hubot --adapter=slack --name="testbot" --description="my first bot" --owner="me"

コマンドを入力すると、かわいい(?)マスコットキャラが表示され、テンプレートを作ってくれます。終わるまでしばらく待ちましょう。

*Hubotの動作確認

それでは、先程作ったばかりのHubotの動作確認をしてみましょう。Slackと連携しなくても、コマンドライン上で対話ができるようになっています。下記のコマンドを入力して、Hubotの対話インターフェースを起動します。

bin\hubot

Hubotが起動できたら、echoコマンドを使って応答を確かめてみましょう。入力した文字列をそのまま返すだけの簡単なコマンドです。

testbot echo "hello hubot!"

うまく動作していますね。

*カスタムコマンドの作成

それでは、Hubotを動かしたところで、独自のカスタムコマンドを作ってみましょう。といっても作り方は簡単で、「scriptsディレクトリ」にCoffeeScriptファイルを作成するだけです。ここでは、「test.coffee」という名前で下記の内容のファイルを作成します。

# Description:
#   Hello Hubot

module.exports = (robot) ->
 robot.respond /hello/i, (res) ->
  res.send "Hi! My name is testbot!"

なお、ドキュメントコメントがなくても動作しますが、推奨されているためつけておくほうがよいでしょう。CoffeeScriptが初めての方は、インデントに注意しましょう。

ファイルを保存できたら、先ほど起動したHubotを再起動してください。そのままでは新しいスクリプトを読み込んでいないからです。起動できたら、先ほどと同じようにコマンドを入力し、うまく返事が返ってくるか確かめてみましょう。

testbot hello

上図のように、応答が返ってくればOKです。このように、スクリプトを追加するだけで、簡単にコマンドを増やせます。Node.js上で動いていますから、パッケージを活用して様々なコマンドが作れます。

*Herokuへのデプロイ

ローカルで動かすわけにはいかないので、HubotをHerokuにデプロイして動かしてみましょう。作業を始める前に、Herokuのアカウントを取得し、toolbeltをインストールしておいてください。

Heroku:https://www.heroku.com/

それでは、Herokuで新しいプロジェクトを作成し、下記のコマンドを使ってHeroku上にデプロイしましょう。既にHerokuを使っている方なら、いつもどおりの作業ですね。なお、app-nameは適宜割り当てられた名前を入力してください。

heroku login
git init
heroku git:remote -a [app-name]
git add .
git commit -am "first commit"
git push heroku master

これで、Herokuへのデプロイは完了です。

*Slackとの連携と動作確認

最後に、SlackとHeroku上のHubotを連携させて、チャットできるか確かめてみましょう。先に、Slackのアカウントを作成しておいてください。

Slack:https://slack.com/

それでは、Slackの画面左上のメニューから「Apps & integrations」を選び、「Hubot」を検索して、インストールしましょう。Usernameは、任意のボット名にしてください。すると、Hubotが追加されますので、表示されているAPI Tokenをコピーしておきましょう。後で使用します。それから、Slackの招待したいchannelで、下記のコマンドを入力してボットを招待しましょう。

/invite @[Username]

次に、Herokuの環境変数に先ほどのAPI Tokenを下記のコマンドで設定します。

heroku config:set HUBOT_SLACK_TOKEN=[API Token]

さて、これでようやくすべての準備が整いました。Slack上で、ボットに呼びかけてみましょう。@[Username]に続けて、コマンドを指定してやればOKです。すると、次のようにしっかり返事が返ってきます。

このように、簡単にボットをチャットに参加させることができます。あなたのオリジナルコマンドを作成して、ボットに色々な機能を追加してみましょう。もちろん、チャットに人間のチームメンバーを招待するのも忘れずに。

まとめ

うまくHubotに返事をしてもらえましたか?ここまで、HubotとSlackの簡単な連携方法について説明しました。実践で使うためには、プロジェクトに合わせたコマンドスクリプトを作成する必要があります。幸い、HubotはCoffeeScriptで簡単に新しいコマンドを追加できます。ビルドシステムやコードリポジトリなどとAPIで連携させ、定型的な作業を自動化していきましょう。情報共有にもなりますし、後からの履歴の確認もできます。属人的な作業を排除し、DevOpsを進めていきましょう。


本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。

開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!

「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。

クラウド型バグ管理・バージョン管理ソフトの「tracpath(トラックパス)」を提供しているオープングルーヴが運営しています

You Might Also Like