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のアプリを作成する必要があります。
これでインスタンスの停止忘れが防げて、無駄遣いが減らせるはず。