チャットワークとHubotでAWSを操作する

Screenshot: https://hubot.github.com/
イノーバの自称フルスタックエンジニアの瀬川です。好きなディズニーキャラクターはライトニング・マックィーンです。こんにちは。
HubotというGitHub社製のチャットボットがあります。読み方は「ヒューボット」らしいです。
イノーバでもチャットワークでHubotを導入し始めたので、事例を紹介してみようと思います。
導入のきっかけ
イノーバでは、開発メンバーのサーバーへのアクセス管理のために、SSH踏み台(Bastion)サーバーを構築していて、セキュリティのため作業するときだけ起動するルールになっています。
しかし、踏み台サーバーを利用するのは一人ではありません。作業しようと思ったときに他のメンバーが使っているかどうか、イチイチ確認するのが正直面倒でした。チャットに向かってつぶやいたら自動的に踏み台サーバーが起動する仕組みがあれば、同時に開発メンバーに周知できるし、便利そうだよね。ということで導入しました。
チャットワークとHubotでAWSを操作する準備
Hubotの開発手順は公式ドキュメントなどを参照してもらうこととして、チャットワークとHubotでAWSを操作するために下記の準備が必要です。
- チャットにHubotのアカウントを用意する。
- チャットワークの場合は事前にAPIの利用申請と、APIトークンの発行が必要です。
- Hubotアカウントが常駐するチャットルームも作っておきましょう。
- AWSにHubot用のアカウントを作成する。
- IAMを使い、Hubotに必要な権限だけを持ったアカウントを作成する。
- Herokuのアカウントを用意する。
- Redisのアドオンを利用するため、無料プランで運用できますがクレジットカード登録が必要になります。
- また、パソコンにHeroku toolbeltのインストールが必要です。
- HubotはnodejsとCoffeeScriptで書かれているので、nodejsとCoffeeScriptについて学習しておく。(たぶんJavaScriptでも大丈夫)
- EC2の操作はAWS-SDKのnpmパッケージを使います。
HubotでEC2を操作してみる
実際にチャットワークからHubotを使ってEC2インスタンスを起動してみたのがこちら。
Hubotが常駐しているチャットルームでHubotの名前に続いてコマンドを入れると反応してくれます。

ちゃんとEC2インスタンスが起動してますね!便利!

所感
Hubotは構造がとてもシンプルで分かりやすく、コマンドの作成も簡単でした。Herokuの無料枠内で運用できるため、CoffeeScript(JavaSCript)が分かっていれば導入のハードルはとても低いと思います。
インフラオペレーション系の作業の自動化などはHubotととても相性が良さそうです。
今後Hubotにやらせたいこと
- 新機能のリリースなど、踏み台の起動以外の運用タスクをHubotにやらせたい。
- コマンドをもっと楽しい感じにしたい。
- 僕「踏み台さん出番です」
- Hubot「ごごごごご(踏み台起動したです)」
- 今日のランチをHubotに決めてもらいたい。