シンジです。Slackの醍醐味、hubotを使って、雨が降る・やむ、30分前にSlackへ画像付きで通知する方法です。
うまくいくとこんな感じで通知してくれます
今回はAmazon AWS EC2にhubotを起動させます
AWSマネジメントコンソールからEC2を選択します。
Amazon Linuxを使います。
一番やっすいやつで十分すぎです。詳細設定をしましょう。
詳細設定は、一番下の部分だけいじります。
高度な設定に、以下のテキストを入れてやります。
#cloud-config write_files: - content: | repo_update: true repo_upgrade: true locale: ja_JP.UTF-8 timezone: Asia/Tokyo owner: root:root path: /etc/cloud/cloud.cfg.d/99_mysettings.cfg permissions: '0644' runcmd: - yum update -y
入力出来たら、ストレージの追加へ行きましょう。
ストレージをちょっぴり増やしておきます。
タグは適当に付けておきましょう。
セキュリティグループは重要です。80番は空けますが、22番は自分のIPアドレスのみからアクセスできるようにしておくのが吉です。
これでOK。作成しちゃいましょう。キーペアどうするか聞いてくるので、新規で作る場合はダウンロードが始まるので、後でchmod 400 hoge.pemして権限を変えましょう。
晴れてEC2が起動すればこんなかんじ。パブリックDNSの部分に記載されているアドレスでEC2にSSHで接続します。
SSHでログインする
ssh -i ~/Downloads/hogehogehoge.pem ec2-user@ec2-xx-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com The authenticity of host 'ec2-xx-xxx-xx-xxx.ap-northeast-1.compute.amazonaws.com (xx.xxx.xx.xxx)' can't be established. ECDSA key fingerprint is SHA256:MFAKMFLMASFMLKASFMKLAMSFMLAMSFMKLMASFMLMAAF. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-52-193-22-125.ap-northeast-1.compute.amazonaws.com,xx.xxx.xxx.xxx' (ECDSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|___|___| https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/ 11 package(s) needed for security, out of 27 available Run "sudo yum update" to apply all updates.
node.js、npm、もろもろをインストールする
sudo yum -y install nodejs npm redis --enablerepo=epel sudo npm install -g yo generator-hubot sudo npm install -g npm sudo npm install -g n sudo n stable
redisを起動
sudo /etc/init.d/redis start sudo chkconfig redis on
hubotのプロジェクトのディレクトリを作成する
mkdir slack cd slack/
hubotのプロジェクトを作成する(sudoすると失敗する)
yo hubot ? ========================================================================== We're constantly looking for ways to make yo better! May we anonymously report usage statistics to improve the tool over time? More info: https://github.com/yeoman/insight & http://yeoman.io ========================================================================== (Y/n) _____________________________ / // | Extracting input for | //// _____ | self-replication process | ////// /_____ / ======= |[^_/_]| /---------------------------- | | _|___@@__|__ +===+/ /// _ | |_ /// HUBOT/\ |___/// / \ / +---+ ____/ | | | //| +===+ // |xx| ? Owner メールアドレス ? Bot name ボットの名前 ? Description 何か適当に ? Bot adapter (campfire) slackgot back false ? Bot adapter slack
入力項目は適当に入れましょう、最後のアダプターのところだけ重要。
スクリプトを編集する
vi external-scripts.json
元がこれ
[ "hubot-diagnostics", "hubot-help", "hubot-heroku-keepalive", "hubot-google-images", "hubot-google-translate", "hubot-pugme", "hubot-maps", "hubot-redis-brain", "hubot-rules", "hubot-shipit" ]
herokuの部分を削除して保存する。こんなかんじ。
[ "hubot-diagnostics", "hubot-help", "hubot-google-images", "hubot-google-translate", "hubot-pugme", "hubot-maps", "hubot-redis-brain", "hubot-rules", "hubot-shipit" ]
slackアダプター、お天気botをインストールする
npm install hubot-slack --save npm install hubot-slack-rainfall-alert --save
またスクリプトを編集する
vi external-scripts.json
“hubot-slack-rainfall-alert”,を追加する。こんなかんじ。
[ "hubot-slack-rainfall-alert", "hubot-diagnostics", "hubot-help", "hubot-google-images", "hubot-google-translate", "hubot-pugme", "hubot-maps", "hubot-redis-brain", "hubot-rules", "hubot-shipit" ]
詳細設定の前に、yahooのAPIキーと、GoogleのAPIキーを取得する
まずはyahooから
https://e.developer.yahoo.co.jp/dashboard/
yahooのIDが無い場合は作成します。それから、新しいアプリケーションを開発、をクリック。
サーバーサイドで選択して、必要事項を入力。「アプリケーションID」が取得出来るので、これを使います。
そしてGoogle
https://console.developers.google.com/
APIを利用するをクリックして有効にします。
URL Shortenerを有効にします。検索窓に入力すると出てきます。
APIキーを取得します。APIを有効にしましょう。
サーバーキーを選択して下さい。「APIキー」が取得出来るので、これを使います。
お天気情報を設定する
サーバー側の環境変数に設定します。
vi /home/ec2-user/.bash_profile
以下の項目を設定します。内容は適切に利用者の環境に合わせてください。
緯度と経度はこのサイトで調べると便利です。(下記の設定では虎ノ門ヒルズが拠点になっています)
http://www.geocoding.jp/
export HUBOT_RAINFALL_ALERT_YAHOO_APP_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx ← YahooのAPIキー export HUBOT_RAINFALL_ALERT_GOOGLE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx ← GoogleのAPIキー export HUBOT_RAINFALL_ALERT_CHANNEL="general" ←チャンネル名 export HUBOT_RAINFALL_ALERT_THRESH="0.5" ←雨量のしきい値(mm/h) export HUBOT_RAINFALL_ALERT_CRONTIME="0 */10 0,9-23 * * *" ←チェックするインターバル export HUBOT_RAINFALL_ALERT_LAT="35.666828" ←雨量をチェックする場所の緯度 export HUBOT_RAINFALL_ALERT_LON="139.74963" ←雨量をチェックする場所の経度 export HUBOT_RAINFALL_ALERT_LAT_FOR_MAP="35.666828" ←雨雲マップに表示する中心の緯度 export HUBOT_RAINFALL_ALERT_LON_FOR_MAP="139.74963" ←雨雲マップに表示する中心の経度 export HUBOT_RAINFALL_ALERT_IMAGE_WIDTH="500" ←画像の横幅 export HUBOT_RAINFALL_ALERT_IMAGE_HEIGHT="500" ←画像の縦幅
Slackを設定する
Slackのインテグレーションから、hubotを検索して、追加します。
またAPIキーが出てくるので、キー手前の文字列丸ごとコピーします。
ついでにアイコンとか変えると、それっぽくなります。
最後にSaveするのを忘れずに!!!一番下にありますよ!!!
SlackのAPIキーをサーバー側に登録する
vi /home/ec2-user/.bash_profile
さっきのキーにexportを追加して記述。
export HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
bashの内容を読み込む。
source ~/.bashrc
いよいよ起動!
nohup bin/hubot --adapter slack &
んではテストしてみましょうー
対象のチャンネルのbotを呼ぶ
先程設定したチャンネルに、Slack側で作成したbotを招待します。他のユーザーをチャンネルに招待するときと同じです。そのbotが参加さえしていれば、後は勝手にやってくれます。
rainfall 適当な地名、を打ってみる
こんな感じで動けばOK
完成
hubot + Slackで自動化ライフを嗜みましょうw(業務に直結しないあたりがアレなかんじで最高