概要
前回 Ruby で docker のイベント情報を取得する方法を紹介しました
今回は
環境
- Mac OS X 10.12.3
- docker 17.03
- ruby 2.2.3
- docker-api 1.33.2
- slack-api 1.2.4
ライブラリのインストール
- vim Gemfile
gem "docker-api"
gem "slack-api"
- bundle install
コード
- vim docker-status-bot.rb
require 'docker'
require 'slack'
@token = "xoxp-..."
Slack.configure {|config| config.token = @token }
Docker.options = { :read_timeout => 900 }
def post(msg)
params = {
:token => @token,
:channel => "#general",
:username => "docker-status",
:text => msg,
:icon_url => 'http://www.gakusmemo.com/wp-content/uploads/2016/08/115HU350-0.jpg'
}
puts "post"
Slack.chat_postMessage params
end
Docker::Event.stream { |event|
case event.status
when "start" then
puts "start"
msg = "A container #{event.actor.attributes["name"]} is started"
post msg
when "destroy" then
puts "destroy"
msg = "A container #{event.actor.attributes["name"]} is destroyed"
post msg
else
#puts "status: #{event.action}"
end
}
token はこちら から取得します
特に説明するポイントはないと思います
Slack に通知するためのメソッドを作成して条件に一致したコンテナのステータスになったら、コンテナ名と共に Slack に通知するだけです
実行
- bundle exec ruby events.rb
動作確認
docker run --rm alpine date
な感じのコンテナを起動すると Slack 上に以下のように通知されると思います
最後に
Ruby で docker events の情報を Slack に通知するところまでやってみました
今回は Slack に通知する例を紹介しましたが、IFTTT でも MQTT でも何にでも連携することは可能かなと思います
こういうのができると自動化などが捗って良いですね
0 件のコメント:
コメントを投稿