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

More Related Content

What's hot

アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4Atelier Akihabara
 
アトリエ秋葉原 Choregraphe WS#3
アトリエ秋葉原 Choregraphe WS#3アトリエ秋葉原 Choregraphe WS#3
アトリエ秋葉原 Choregraphe WS#3Atelier Akihabara
 
2013.01.26 反PMO宣言
2013.01.26 反PMO宣言2013.01.26 反PMO宣言
2013.01.26 反PMO宣言SHIBA Koutaro
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaishihara_yuki
 
アトリエ秋葉原 Choregraphe WS#1
アトリエ秋葉原 Choregraphe WS#1アトリエ秋葉原 Choregraphe WS#1
アトリエ秋葉原 Choregraphe WS#1Atelier Akihabara
 
LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件Jun Mori
 
20140921 アトリエ秋葉原 開発ワークショップ_v10
20140921 アトリエ秋葉原 開発ワークショップ_v1020140921 アトリエ秋葉原 開発ワークショップ_v10
20140921 アトリエ秋葉原 開発ワークショップ_v10Atelier Akihabara
 
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話Masataka Kono
 
トークイベントいろいろ
トークイベントいろいろトークイベントいろいろ
トークイベントいろいろ高見 知英
 
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道Masayuki KaToH
 
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9Hiroshi Toda
 

What's hot (13)

アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4
 
アトリエ秋葉原 Choregraphe WS#3
アトリエ秋葉原 Choregraphe WS#3アトリエ秋葉原 Choregraphe WS#3
アトリエ秋葉原 Choregraphe WS#3
 
2013.01.26 反PMO宣言
2013.01.26 反PMO宣言2013.01.26 反PMO宣言
2013.01.26 反PMO宣言
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishihara
 
アトリエ秋葉原 Choregraphe WS#1
アトリエ秋葉原 Choregraphe WS#1アトリエ秋葉原 Choregraphe WS#1
アトリエ秋葉原 Choregraphe WS#1
 
LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件
 
Lt 101218
Lt 101218Lt 101218
Lt 101218
 
20140921 アトリエ秋葉原 開発ワークショップ_v10
20140921 アトリエ秋葉原 開発ワークショップ_v1020140921 アトリエ秋葉原 開発ワークショップ_v10
20140921 アトリエ秋葉原 開発ワークショップ_v10
 
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
 
トークイベントいろいろ
トークイベントいろいろトークイベントいろいろ
トークイベントいろいろ
 
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
 
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
 
実用Brainf*ckプログラミング入門編
実用Brainf*ckプログラミング入門編実用Brainf*ckプログラミング入門編
実用Brainf*ckプログラミング入門編
 

Viewers also liked

20150419_pbtech_openstack_nyah #pbtech
20150419_pbtech_openstack_nyah #pbtech20150419_pbtech_openstack_nyah #pbtech
20150419_pbtech_openstack_nyah #pbtechume3_
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Uchio Kondo
 
Angular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップAngular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップKazuyoshi Tsuchiya
 
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちTranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちMasakazu Matsushita
 
有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25Minoru Chikamune
 
nanapiのChatOps活用事例 #devops_LT
nanapiのChatOps活用事例 #devops_LTnanapiのChatOps活用事例 #devops_LT
nanapiのChatOps活用事例 #devops_LT晃 遠山
 
仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」
仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」
仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」Kazuhito Miura
 
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話Tomoya Kita
 
nadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティスnadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティスKazuhiro Nishiyama
 
20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方
20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方
20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方Masao Ikeya
 
Machine learning15minutes 20161126
Machine learning15minutes 20161126Machine learning15minutes 20161126
Machine learning15minutes 20161126CREW SYSTEMS, INC.
 
Redmine + gitlab: merge base development
Redmine + gitlab: merge base developmentRedmine + gitlab: merge base development
Redmine + gitlab: merge base developmentsmdkk
 
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1Nguyen Tuan
 
Landset 8 的雲層去除技巧實作
Landset 8 的雲層去除技巧實作Landset 8 的雲層去除技巧實作
Landset 8 的雲層去除技巧實作鈵斯 倪
 
合同勉強会20160821
合同勉強会20160821合同勉強会20160821
合同勉強会20160821Nguyen Tuan
 
小魯蛇與他快樂的夥伴
小魯蛇與他快樂的夥伴小魯蛇與他快樂的夥伴
小魯蛇與他快樂的夥伴鈵斯 倪
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopsknjcode
 

Viewers also liked (20)

20150419_pbtech_openstack_nyah #pbtech
20150419_pbtech_openstack_nyah #pbtech20150419_pbtech_openstack_nyah #pbtech
20150419_pbtech_openstack_nyah #pbtech
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
 
Angular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップAngular jsの継続的なバージョンアップ
Angular jsの継続的なバージョンアップ
 
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちTranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたち
 
有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25
 
nanapiのChatOps活用事例 #devops_LT
nanapiのChatOps活用事例 #devops_LTnanapiのChatOps活用事例 #devops_LT
nanapiのChatOps活用事例 #devops_LT
 
仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」
仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」
仁斤曰く 「”手間業”蔓延り易く、 “楽”成り難し」
 
ChatOps with Hubot
ChatOps with HubotChatOps with Hubot
ChatOps with Hubot
 
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
 
nadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティスnadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティス
 
20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方
20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方
20161126 第6回 Machine Learning 15 minutes! AI技術のサービス活用障壁と事業現場での乗越え方
 
Machine learning15minutes 20161126
Machine learning15minutes 20161126Machine learning15minutes 20161126
Machine learning15minutes 20161126
 
Redmine + gitlab: merge base development
Redmine + gitlab: merge base developmentRedmine + gitlab: merge base development
Redmine + gitlab: merge base development
 
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
今日から始める人工知能 × 機械学習 Meetup ライトニングトーク1
 
Landset 8 的雲層去除技巧實作
Landset 8 的雲層去除技巧實作Landset 8 的雲層去除技巧實作
Landset 8 的雲層去除技巧實作
 
合同勉強会20160821
合同勉強会20160821合同勉強会20160821
合同勉強会20160821
 
小魯蛇與他快樂的夥伴
小魯蛇與他快樂的夥伴小魯蛇與他快樂的夥伴
小魯蛇與他快樂的夥伴
 
LINE Bot 作ってみた
LINE Bot 作ってみたLINE Bot 作ってみた
LINE Bot 作ってみた
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatops
 
ChatOps@研究室
ChatOps@研究室ChatOps@研究室
ChatOps@研究室
 

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

プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!treby
 
20141220 CreatorsMeetup23
20141220 CreatorsMeetup2320141220 CreatorsMeetup23
20141220 CreatorsMeetup23Seigo Tanaka
 
建物メンテナンスの現場UI・UXの作り方(仮)
建物メンテナンスの現場UI・UXの作り方(仮)建物メンテナンスの現場UI・UXの作り方(仮)
建物メンテナンスの現場UI・UXの作り方(仮)BPM Co., Ltd.
 
Chat opsをはじめよう!
Chat opsをはじめよう!Chat opsをはじめよう!
Chat opsをはじめよう!dcubeio
 
ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?Takanari Tokuwa
 
kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋 Vol.3 「寂しくないKintone」kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋 Vol.3 「寂しくないKintone」kintone Café 名古屋支部
 
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -MinoruIto3
 

Similar to 2015年4月ペパボテックカンファレンス資料 (10)

プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!
 
20141220 CreatorsMeetup23
20141220 CreatorsMeetup2320141220 CreatorsMeetup23
20141220 CreatorsMeetup23
 
建物メンテナンスの現場UI・UXの作り方(仮)
建物メンテナンスの現場UI・UXの作り方(仮)建物メンテナンスの現場UI・UXの作り方(仮)
建物メンテナンスの現場UI・UXの作り方(仮)
 
Chat opsをはじめよう!
Chat opsをはじめよう!Chat opsをはじめよう!
Chat opsをはじめよう!
 
ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?ChatGPTで面白い物語は作れるのか?
ChatGPTで面白い物語は作れるのか?
 
LINE dev meetup
LINE dev meetupLINE dev meetup
LINE dev meetup
 
CONBU API の開発
CONBU API の開発CONBU API の開発
CONBU API の開発
 
20150523 1 att概要
20150523 1 att概要20150523 1 att概要
20150523 1 att概要
 
kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋 Vol.3 「寂しくないKintone」kintone Café 名古屋 Vol.3 「寂しくないKintone」
kintone Café 名古屋 Vol.3 「寂しくないKintone」
 
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
 

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