パパエンジニアのポエム

奥さんと娘ちゃんへの愛が止まらない

GCEインスタンスの自動起動停止をスケジューリングする

適切なサービスアカウントを作成する

インスタンスのサービス アカウントの作成と有効化  |  Compute Engine ドキュメント  |  Google Cloud
GCEインスタンスをマネジメントするだけならCompute Adminのみでおk
今回はCloudSQLも管理したいので、Cloud SQL 管理者も追加する
Terminal Clientサービスアカウントを作成する

ターミナルサーバ(GCE)作成

cronを動かすだけなので、f1-micro(vCPU x 1、メモリ 0.6 GB)でおk
サービスアカウントに先程作ったTerminal Clientを設定する
作ったインスタンスにログインしZONEを設定する

gcloud compute ssh terminal-dev
sudo gcloud config set compute/zone asia-northeast1-a

最後に gcloud の config を確認する

gcloud config list

gcloudでGCEインスタンスを起動停止するスクリプト

redis-dev インスタンスを起動するスクリプト
terminal-cron-start.shとして保存

gcloud compute instances start redis-dev

redis-dev インスタンスを停止するスクリプト
terminal-cron-stop.shとして保存

gcloud compute instances stop redis-dev

cron で定時にスクリプトが実行されるようにする

crontab を設定する

sudo crontab -e

editorに何を使うか選ぶ
3の vim を選んだ(nano使えないので)
下記2行を追加、UTCタイムであることに注意
10:00(JST)に起動し、19:00(JST)に停止する

0 1 * * 1-5 sh /home/terminal-cron-start.sh
0 10 * * 1-5 sh /home/terminal-cron-stop.sh

Cloud SQL の起動停止も追加する

terminal-cron-start.shterminal-cron-stop.shにそれぞれ以下を追加する
Cloud SQL起動スクリプト

gcloud sql instances patch db-$ENV --activation-policy ALWAYS

Cloud SQL停止スクリプト

gcloud sql instances patch db-$ENV --activation-policy NEVER

これでGCEインスタンスとCloud SQL自動起動停止スクリプトをスケジューリングできる