↓ メインコンテンツへスキップ

GCP で Terraform を利用する準備

前提
#

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

gcloud CLI の設定を行う
#

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

1$ brew install --cask google-cloud-sdk

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

1$ gcloud auth login

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

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

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

GCPコンソール画面

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

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

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

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

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

2. 環境変数に設定する
#

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

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

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

 1resource "google_storage_bucket" "terraform-state-store" {
 2  name     = "my-terraform-bucket"
 3  location = "us-west1"
 4  storage_class = "REGIONAL"
 5
 6  versioning {
 7    enabled = true
 8  }
 9
10  lifecycle_rule {
11    action {
12      type = "Delete"
13    }
14    condition {
15      num_newer_versions = 5
16    }
17  }
18}

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

以下のような感じ:

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

参考資料
#

ここに掲載する記事はまだありません。