GCE(Google Compute Engine)で起動して一定時間後に自動でシャットダウンする方法
うっかりミスによるムダな課金を防ぎたい
GCEをビルドマシンとして使っています。
CPUコアの数やメモリサイズによって時間単価が異なるので、普段は1コアで使っていて重たいビルドをするときだけ4コアや8コアに切り換えて使っています。
貧乏性なので、8コアにしたまますっかり忘れて課金されるのが心配でたまりません。(まだ無料期間なのですが。)
そこで、一定時間後に自動でシャットダウンするスクリプトを作って、/etc/rc.local から起動するようにしました。
仕様
CPUのコア数でシャットダウンまでの時間を変える。
1個なら8時間、2個なら6時間、3個なら5時間、4個なら4時間、それ以外は3時間。
シャットダウンする60分前、15分前、5分前にwallコマンドで警告メッセージを表示する。
時間になったらシャットダウンする。念のため5分後にもシャットダウンする。
自動シャットダウンをキャンセルしたいときはそのスクリプトのプロセスをkill すればよい。
準備
rootユーザーで(sudo su
を実行した状態で) Cloud SDKをインストールして、cloud コマンドが使用できるようにしておきます。
https://cloud.google.com/sdk/downloads?hl=ja
(2018.4.16 追記。)
Cloud SDKをインストールしなくても、単に shutdown -h now
でシャットダウンすることができます。ただし、GCEのWeb UIにその状態が反映されるのに数分の遅延があります。
gcloud compute instances stop
のコマンドでシャットダウンした場合は、Web UIにすぐに反映されます。
スクリプト
しくみは簡単で、sleepしてから何かを実行するだけ。
今後改変すると思うので、gistに貼っておきます。
https://gist.github.com/tetsu-koba/d1dbefac761aea5bc5c402c1465db04b
このファイルを/root/autoshutdown.sh で保存して、/etc/rc.local からこれを実行するようにします。
コメント歓迎
なにかもっといい方法があれば。
最初はatコマンドでやろうとしたけど、これだと時間になる前に手動でリブートしたときにもその時刻にシャットダウンするという情報が残ったままになってしまうのでよくなかった。
Author And Source
この問題について(GCE(Google Compute Engine)で起動して一定時間後に自動でシャットダウンする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/tetsu_koba/items/e776adca55ac3dbcf836著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .