- 高谷雄貴
- ペパボではじっぱーと呼ばれてます
- @buty4649
- http://github.com/buty4649/
- 2014/02にペパボに入社
- 前職ではSEとかSIerとか言われることをやっていた
- EC系、ヘテムルのインフラを見てます
- munin職人
のでそちらのお話しはあまりできません。。。
しかし、最近hubotなる おもちゃ 便利ツールを使い始めたのでこれを紹介したいと思います。
Github社が開発したチャットbotフレームワークです。
Node.jsで動いていて、スクリプトはcoffeescriptを使って書かれています。 (Javascriptでも動く)
-----------------------------
|hubot |
| [Robot] <-> [brain] ----|-> [redis or file or ...]
| ^ |
| | |
| --------> [Adapter]---|-> [IRC or Slack or Twitter or ...]
----------------------------
```
* Robot
* Hubot本体
* メッセージを受け取って処理する
* brain
* 外部ストレージと連携しデータの永続化を行う
* Adapter
* チャットツールとRobotを接続する
### hubotのインストールと実行
#### Mac
```
$ brew install node
$ npm install -g coffee-script hubot
```
#### プロジェクト作成
```
$ hubot -c test
```
#### とりあえず実行
```
$ cd test
$ ./bin/hubot
Hubot>
Hubot> hubot ping
Hubot> PONG
```
### 構成
```
+ Procfile
+ README.md
+ bin
+- hubot
+- hubot.cmd
+ external-scripts.json
+ hubot-scripts.json
+ node_modules
+ package.json
+ scripts
+- events.coffee
+- google-images.coffee
+- help.coffee
+- httpd.coffee
+- maps.coffee
+- ping.coffee
+- pugme.coffee
+- roles.coffee
+- rules.coffee
+- storage.coffee
+- translate.coffee
+- youtube.coffee
```
Github社謹製スクリプト
https://github.com/github/hubot-scripts
### scriptの作成
scriptsディレクトリ配下にスクリプトを作成する
以下、ping.coffeeから抜粋
```
module.exports = (robot) ->
robot.respond /PING$/i, (msg) ->
msg.send "PONG"
```
`respond` を `hear` にするとすべての会話を対象とする
### 外部プログラムの呼び出し
```
cmd = "#{httping} -c 5 -t 10 #{url} | tail -3"
exec cmd, (err, stdout, stderr) ->
if err
msg.send "httping error:" + stderr
else
for line in stdout.split("\n")
msg.send line if line.length > 0
```
exec関数を使えば外部プログラムが呼び出せる
### 作った奴
* muninのリンク返す奴
* nagiosのリンク返す奴
* httpingする奴
* テストメールを送る奴(最近動かない)
* リマインドする奴
```
zipper>munin manage002
ecbot>ξ*゚⊿゚)ξ< http://***/munin/manage/manage002.shop-pro.jp/index.html
zipper>nagios manage002
ecbot>ξ*゚⊿゚)ξ< http://***/nagios/cgi-bin/status.cgi?host=manage002.shop-pro.jp
ecbot>ξ*゚⊿゚)ξ< http://***/nagios/cgi-bin/status.cgi?host=manage002.shop-pro.lan
```
### もっと便利な使い方
#### 自動デプロイする
```
tnmt>hubot deploy heteml puppet to production
hubot>tnmt started to deploy heteml puppet master to production
```
#### セキュリティアップデートを自動化する奴
参考: http://blog.glidenote.com/blog/2014/09/12/chatops-security-update/
### 参考資料
* [Hubot + CoffeeScript ではじめるやわらかプログラミング入門](https://gist.github.com/udzura/0cb2447c305c51670414)
* [GitHub社謹製! bot開発・実行フレームワーク「Hubot」](http://gihyo.jp/dev/serial/01/hubot/0002)