LoginSignup
7
1

More than 3 years have passed since last update.

プリエンプティブインスタンスの停止(起動)をslackでお知らせできるようにする

Last updated at Posted at 2019-08-17

概要

普段kaggleでGCEを使うときにプリエンプティブインスタンスを使うのですが, プリエンプティブインスタンスは24時間以内に停止させられてしまいます.
停止させられたら「停止したよ」ってお知らせできるようにしたいなと思って, GCEだとそれが簡単にできることがわかったのでそれの覚書です.

こんなふうにできるよー(かわいい...)
スクリーンショット 2019-08-17 22.25.51.png

事前準備

まず事前準備として通知したいslackのチャンネルなどのwebhookを設定してください.こちらの記事がわかりやすくまとまっています.

では以下で説明しやすいようにwebhookのurlをhttps://hogehogeとして, 自分宛てにメンションを飛ばすように自分のユーザー名をhogeとします.

シェルスクリプトでの動作確認

慎重に行うためにまずはシェルスクリプトでの動作確認をしてみます.
以下のようなシェルスクリプトを作ってください.これをtmp.shとします.


#bin/bash

WEBHOOK_URL="https://hogehoge"
JSON="{\"text\": \"<@hoge> インスタンスが停止しちゃったよ!\"}"
curl -s -X POST -H 'Content-Type: application/json' -d "$JSON" $WEBHOOK_URL

メンションは<@hoge>とするとできますよ.
さ, これを叩いてみて実際に自分のところにメンション付きできたのを確認できたら次に進みましょう.

インスタンスの設定

さ, もう一歩です.
自分のGCEのインスタンスの設定を編集したいのでインスタンス名を押すと以下の画像のようにインスタンスの編集を行うボタンが現れるので押します.
スクリーンショット 2019-08-17 22.09.31.png

するとカスタムメタデータという項目があるので項目を追加を押して, キーにshutdown-scriptと入れます.
値にはさきほどのtmp.shの内容をまるっとコピペします.
以上で完了です! ちなみにshutdown-scriptの部分をstartup-scriptにすると起動したタイミングで通知させることができます.
こんな感じです.
スクリーンショット 2019-08-17 22.21.15.png

まとめ

  • まずはwebhookのurlを取得しよう
  • シェルスクリプトから立たけるようにしよう
  • GCEのカスタムメタデータのキーにshutdown-scriptと入れよう
  • GCEのカスタムメタデータの値にさっきのシェルスクリプトの内容を貼り付けよう
7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1