Skip to content
TwitterQiitaGitHub

GCP で Terraform を利用する準備

前提

Google アカウントは作成済みで、ブラウザ上のコンソールから GCP を使い始めたことがある状態であること。

gcloud CLI の設定を行う

Homebrew 経由でサクッとインストール:

$ brew install --cask google-cloud-sdk

インストールが完了したら認証を行う:

$ gcloud auth login

ブラウザでログイン画面が出るので権限許可を出す。

Terraform 用のサービスアカウントを作成する

Terraform 経由で操作するための権限を付与したサービスアカウントを 作成しておく。 GCP のコンソールから 「IAM と管理」→「」

GCPコンソール画面

権限は一旦「編集者」に設定しておけばOK(ただし、リソースによっては権限の追加が必要なものがある)。

完了後、クレデンシャル情報が記載された JSON を DL し、適切な場所に保存する。

Terraform でのクレデンシャルの指定方法

1. provider に直接ファイルの場所を記載する

provider "google" {
credentials = "${file("<your-credential-file-path>")}"
project = "${lookup(var.project_name, "${terraform.workspace}")}"
region = "asia-northeast1"
}

2. 環境変数に設定する

$ export GOOGLE_APPLICATION_CREDENTIALS="<your-credential-file-path>"

tfstate を保管するためのバケットを GCS に用意する

Terraform でバケットを作成するのはあんまり良くないという話を聞くので、ここは手動で作成する。 設定内容を Terraform で書くと以下のような感じ:

resource "google_storage_bucket" "terraform-state-store" {
name = "my-terraform-bucket"
location = "us-west1"
storage_class = "REGIONAL"
versioning {
enabled = true
}
lifecycle_rule {
action {
type = "Delete"
}
condition {
num_newer_versions = 5
}
}
}

backend で tfstate の場所を GCS に指定する

以下のような感じ:

terraform {
# https://www.terraform.io/language/settings/backends/gcs
backend "gcs" {
bucket = "<バケット名>"
prefix = "<適当なパス名>"
}
}

参考資料