Your SlideShare is downloading. ×
2015年4月ペパボテックカンファレンス資料
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

274
views

Published on

第一回ペパボテックカンファレンス …

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

Published in: Engineering

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
274
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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