GCPのインスタンスを定期的に起動/停止させる【小ネタ】

GCP関連の小ネタです。

インスタンスのうっかり停止忘れを防ぐために、定期的にインスタンスを起動/停止します。

元ネタはGCPの公式ドキュメントで公開されています。

が、手動でポチポチやるのは大変だったので、Terraform化しました。

リポジトリ

上記リポジトリを使って対応する場合の手順を紹介します。


まずは、いくつかGCPのAPIを有効化する必要があるので、コマンドを使って有効化します。

gcloud services enable cloudfunctions.googleapis.com
gcloud services enable cloudscheduler.googleapis.com

次に、先ほど紹介したリポジトリをクローンし、tfファイルを実行します。

git clone https://github.com/bassbone/gcp-scheduleinstance.git
cd gcp-scheduleinstance
terraform init
terraform plan
terraform apply

これにより、インスタンスを自動で起動/停止させられるようになりました。


自動で起動/停止したいインスタンスにラベル「key:env、value:dev」を設定します。実行のタイミングはvariables.tfのschedule_start/schedule_stopで制御できます。また、そもそも実行するかどうかはvariables.tfのinstance_start/instance_stopで制御できます。(自動で停止だけさせたい場合とか)

この対応をするにあたり、1点ハマりポイントがあります。以前紹介しました(過去記事)が、Cloud Schedulerのジョブを登録する際にGoogle App Engineのアプリを作成する必要があります。

これでインスタンスの停止忘れが防げて、無駄遣いが減らせるはず。