TerraformでGoogle Cloud Platformを簡単に自動化する
Terraformを使えば、ロードバランサー、インスタンステンプレート、インスタンスグループ、ファイアウォールルールを簡単にデプロイできる。

昔々、Google Cloud Platformを学んでいたとき、ワークフローとデプロイメントをTerraformで自動化したくなり、インフラストラクチャを簡単かつ迅速に管理するためにこのIaaC(Infrastructure as Code)を書いた。
これで何ができるか?
SSL付きの安全なロードバランサーを作成し、HTTPリクエストを301リダイレクトコードでHTTPSに変換する。
インスタンステンプレートを作成し、ネットワーク、サブネット、スタートアップスクリプトに関するすべてを設定する。
インスタンスグループを作成し管理する。インスタンスグループのCPUがある値より多いか少ない場合、インスタンスグループマネージャーが自動的にVMをスケールアップまたはスケールダウンする。
VMインスタンスはプライベートIPで実行され、プロジェクト全体のSSHアクセスはデフォルトで許可されていない。ロードバランサーのヘルスチェック用のファイアウォールルールを管理する。
要件
- Compute Engine APIを有効にする(無効な場合)。
Editorロール(または任意のロール)でサービスアカウントを作成し、キーファイルをエクスポートする。- Terraformの状態を保持するためにCloud Google Storageバケットを作成する。必要に応じて、サービスアカウントをバケットのメンバーとして追加できる。
- Compute Engineイメージを作成する。Debian 10ベースのVMを作成し、
sudo apt install -y nginxでnginxをインストールしてこのTerraformコードをテストできる。VMをイメージに変換する前にsudo systemctl enable nginxコマンドを忘れずに。
使用方法
手順は以下の通り...
- リポジトリをクローンする
git clone git@github.com:flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform.git - Google SDKがインストールされていなくてもGoogle Platformで認証する。CI/CDパイプラインに本当に便利だ!既に
gcloud auth loginなどでGoogle Cloud Platformプロジェクトにログインしている場合は、このステップをスキップできる。export GOOGLE_APPLICATION_CREDENTIALS=service-account-key.json - プロジェクトIDもTerraform経由で宣言されるが、値をエクスポートしないと以下のようなエラーが発生する可能性がある。
export GOOGLE_PROJECT="0123456789012"│ Error: project: required field is not set
│ - 変数の値を編集する
variables.tfファイル - SSL証明書の設定
certsフォルダの下にSSL証明書とキーファイルを貼り付ける。ロードバランサーは安全である必要がある! - 本番環境のバージョンをこの変数で簡単に追跡できる。また、インスタンスグループはローリングアップデートを行うために新しいバージョンが必要だ。
export TF_VAR_deploy_version=v1 - 初期化する
terraform init - デプロイしよう
terraform applyまたはterraform apply -auto-approve
リポジトリアドレス
https://github.com/flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform
この記事が役立つことを願っている。
Ercan の他のサイト
同じ著者、別の領域のサイトが2つ。