GCEインスタンスの自動起動停止をスケジューリングする
- 適切なサービスアカウントを作成する
- ターミナルサーバ(GCE)作成
- gcloudでGCEインスタンスを起動停止するスクリプト
- cron で定時にスクリプトが実行されるようにする
- Cloud SQL の起動停止も追加する
適切なサービスアカウントを作成する
インスタンスのサービス アカウントの作成と有効化 | 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.sh
とterminal-cron-stop.sh
にそれぞれ以下を追加する
Cloud SQL起動スクリプト
gcloud sql instances patch db-$ENV --activation-policy ALWAYS
gcloud sql instances patch db-$ENV --activation-policy NEVER