Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

2015年4月ペパボテックカンファレンス資料

7,470 views

Published on

第一回ペパボテックカンファレンス
じっぱー分資料

Published in: Engineering

2015年4月ペパボテックカンファレンス資料

  1. 1. 2015/04/19 じっぱー hubotを用いた ChatOps入門
  2. 2. 自己紹介 ● 2014/02にペパボ入社 ● インフラエンジニア ○ EC → ホスティング → EC → コミュ(←今ここ) ● 去年はmunin職人をやっていた ○ 夜間帯に色つけたり ○ ちょっぱや(当社比)にしたりとか ○ muninはペパボではオワコン ○ 次の職人業を探している
  3. 3. なぜChatOps?
  4. 4. なぜChatOps? サーバのアラートはチャットに表示される チャット画面を開いて、 ターミナル画面に切り替えて コマンドを打つ めんどくさい → チャット画面だけで完結したい
  5. 5. なぜChatOps? サポートの人やマネージャから サーバの状態は大丈夫か聞かれる 説明するのがめんどくさい → チャットのコマンドを教えれば自発的に確認して くれる
  6. 6. そうだbotを作ろう botフレームワークはたくさんあったが、 その時流行っていたhubotを使ってみた
  7. 7. hubotとは? ● GitHub社製のbotフレームワーク ○ Node.jsで動く ○ スクリプトは主にCoffeeScriptで書く ■ Ruby実装のRubotyというフレームワークもある https://github.com/r7kamura/ruboty ○ Adapterを切り替えることで様々なチャット環境へ対応で きる
  8. 8. hubotを使うメリット チャット環境が変わる 例:IRC → Slack 一般的なbotフレームワークはチャット環境依存 → hubotならAdapterを切り替えることで対応できる
  9. 9. hubotを使うメリット(実例) IRCからSlack移行もすぐに出来た! 必要な変更は3つ ● Slackトークンの設定 ● Adapterの変更 ● package.jsonの変更
  10. 10. hubotを使うメリット(実例) 環境変数周りの削除が多いけど…
  11. 11. とりあえずインストールしてみる Macならbrew install して npm installする $ brew install node $ npm install -g coffee-script hubot
  12. 12. 次にプロジェクトを作ってみる お試しプロジェクトを作ってみる $ mkdir test $ cd test $ yo hubot
  13. 13. 色々聞かれる 実行すると ● 作成者 ● botの名前 ● botの説明 ● adapter を聞かれるので答える。 全部デフォルトでOK。
  14. 14. hubotの実行 $ ./bin/hubot Hubot> hubot ping PONG
  15. 15. hubotの構成 ● Robot ● Script ● Brain ● Adapter Robot Script Adapter Chat tools Brain Storage Database hubot
  16. 16. Robot hubotの本体 データのやりとり ● Brain↔Script ● Adapter↔Script Robot Script Adapter Chat tools Brain Storage Database hubot
  17. 17. Script botの動作を定義 ユーザが振る舞いを 追加できる Robot Script Adapter Chat tools Brain Storage Database hubot
  18. 18. Brain データの永続化 ストレージやDBと連 携 Robot Script Adapter Chat tools Brain Storage Database hubot
  19. 19. Adapter チャット環境とRobot を接続 イベントをRobot に伝える Robot Script Adapter Chat tools Brain Storage Database hubot
  20. 20. Scriptの追加 追加する方法 1. 外部スクリプトを使う 2. hubot-scriptを使う 3. 自作する
  21. 21. 1. 外部スクリプトを使う npmや世に出ている便利スクリプトを使う npmではhubot-scriptsタグで 色々登録されている
  22. 22. 1. 外部スクリプトを使う 追加する手順 1. packge.jsonに追加 2. external-scripts.jsonに追加
  23. 23. 2. hubot-scriptsを使う Github社が提供していた便利スクリプト集 package.jsonにhubot-scriptsを追加して、 hubot-scripts.jsonに使いたいスクリプト名を 書くと読み込まれる 今はdeprecatedなので、欲しいスクリプトを 個別に追加するのがよい
  24. 24. 3.自作する プロジェクト内のscriptsディレクトリ配下にファイル を作成する ファイル先頭に決まったフォーマットでコメントを書 かないと、 起動時にdeprecatedメッセージが出て スクリプトを読み込んでくれない。 Hubot> [Sun Apr 12 2015 22:42:47 GMT+0900 (JST)] INFO /Users/usr0600325/Work/20150412_hubot/test/scripts/hello.coffee is using deprecated documentation syntax
  25. 25. 3. 自作する 例えば、bot宛にhelloと送られたら Worldを返すスクリプトを作る
  26. 26. 3. 自作する 実行 Hubot> hubot hello World
  27. 27. 3. 自作する robot.respond を roboto.hear に変えると hubot 宛以外のメッセージに反応する 例えば、 ● IPアドレスに反応 ● つらぽよに反応して励ましてくれる
  28. 28. hearメソッド 実行 Hubot> hello World
  29. 29. 3. 自作する ● respond ● hear この2つを覚えればbotが作れる!
  30. 30. Brain バックエンドの種類 ● Redis ○ redisに格納 ● File ○ jsonで保存 ○ FILE_BRAIN_PATHで保存先を指定
  31. 31. Brainの使い方 robot.brain.get で読み出し robot.brain.set で書き込み
  32. 32. Adapter チャットツールとRobotを接続する ● Slack ○ hubot-slack ● IRC ○ hubot-irc ● Twitter ○ hubot-twitter-userstream
  33. 33. Adapterの使い方 hubot-slackを使ってみる 1. slackのTeam Integrationからhubotを追加 2. hubot-slackをセットアップする ● package.jsonにhubot-slackを追加 3. 最初は #general にしかいない。 /invite して他 チャンネルに招待する。
  34. 34. hubot-slackのTips メンションの飛ばし方 普通に msg.send @*** ではメンションにならない <@USERID> の形でsendしないといけない (めんどくさい。。。) USERIDは、 msg.user.id かbrain.get.users から持ってくる
  35. 35. hubot-slackのTips DMの送り方 robot.sendのroom にユーザ名を指定するとDMになる robot.send {room: "zipper"}
  36. 36. hubot-slackのTIps hearをDMでも反応させる DMでbotにメッセージを送ると、respondで反応するようになる 通常のチャンネルと同じく、hearのように反応させたい場合 respondとhearを 両方設定しておくとよい
  37. 37. 自作したスクリプト nagiosのURLを返すスクリプト nagios サーバ名 と発言するとそのサーバの nagios URLを返す データはyamlで持たせている
  38. 38. 自作したスクリプト muninのURLを返すスクリプト munin URLを返す nagiosと違って、muninページのHTMLをパースして 各サーバのURLを 取得するようにがんばった!
  39. 39. 自作スクリプト 定期的にメッセージを通知する node-cron モジュールを使って、crontabっぽくかけるようにして いる
  40. 40. それ以外の便利なスクリプト Webistranoでデプロイする 社内の人が作った。 hubotからデプロイできて便利
  41. 41. その他スクリプト hubot-scorekeeper ++された数をカウントカウントしてくれる 何かあるたびに++してる/されている ジョークをいうと大抵--される[要出典] ちなみに、私はペパボ内で圧倒的に++されている!
  42. 42. まとめ ● ChatOpsは便利 ○ 煩雑な手順をスクリプト化すると日々のオペレーションが 軽減される ○ 詳しく無い人でも扱える ■ マネージャやCSの人とか ● hubotを使うとチャット環境が変わっても直ぐに対応できる ● スクリプトが簡単に作れる

×