昔々、Google Cloud Platformを学んでいたとき、ワークフローとデプロイメントをTerraformで自動化したくなり、インフラストラクチャを簡単かつ迅速に管理するためにこのIaaC(Infrastructure as Code)を書いた。

これで何ができるか?

SSL付きの安全なロードバランサーを作成し、HTTPリクエストを301リダイレクトコードでHTTPSに変換する。
インスタンステンプレートを作成し、ネットワーク、サブネット、スタートアップスクリプトに関するすべてを設定する。
インスタンスグループを作成し管理する。インスタンスグループのCPUがある値より多いか少ない場合、インスタンスグループマネージャーが自動的にVMをスケールアップまたはスケールダウンする。
VMインスタンスはプライベートIPで実行され、プロジェクト全体のSSHアクセスはデフォルトで許可されていない。ロードバランサーのヘルスチェック用のファイアウォールルールを管理する。

要件

使用方法

手順は以下の通り...

  1. リポジトリをクローンする


    git clone git@github.com:flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform.git

  2. Google SDKがインストールされていなくてもGoogle Platformで認証する。CI/CDパイプラインに本当に便利だ!既にgcloud auth loginなどでGoogle Cloud Platformプロジェクトにログインしている場合は、このステップをスキップできる。


    export GOOGLE_APPLICATION_CREDENTIALS=service-account-key.json

  3. プロジェクトIDもTerraform経由で宣言されるが、値をエクスポートしないと以下のようなエラーが発生する可能性がある。


    export GOOGLE_PROJECT="0123456789012"

    │ Error: project: required field is not set



  4. 変数の値を編集する


    variables.tfファイル

  5. SSL証明書の設定


    certsフォルダの下にSSL証明書とキーファイルを貼り付ける。ロードバランサーは安全である必要がある!


  6. 本番環境のバージョンをこの変数で簡単に追跡できる。また、インスタンスグループはローリングアップデートを行うために新しいバージョンが必要だ。


    export TF_VAR_deploy_version=v1

  7. 初期化する


    terraform init

  8. デプロイしよう


    terraform apply または terraform apply -auto-approve


リポジトリアドレス

https://github.com/flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform

この記事が役立つことを願っている。