Terraform 公式の GCP チュートリアル

概要

やりたいこと

Terraform で GCP を操作したい。

下記の Terraform 公式のチュートリアルを行う。

Terraform

Terraform 準備

過去に tfenv 経由でインストールした。下記参照。

または Terraform 公式のドキュメントを参照。

gcloud インストール

google-cloud-sdk を brew でインストール。

brew install google-cloud-sdk --cask

自分の環境では PATH を通し、コンソールを再起動する必要があった。

vi ~/.zshrc
source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc
source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc

gcloud コマンドが使えるようになっているはず。バージョン確認。

$ gcloud version
Google Cloud SDK 321.0.0
bq 2.0.64
core 2020.12.11
gsutil 4.57

gcloud 初期化。公式のチュートリアルを参照し進める。

gcloud init

設定が完了すると以下に config ファイルができる。

ls -la ~/.config/gcloud/configurations/config_default

現在の config 情報を確認する。

gcloud config configurations list

新たな config は以下で作成する。

gcloud config configurations create hoge

Terraform 用サービスアカウント作成

GCP コンソールより、Terraform 用のサービスアカウントを作成する。

  • IAMと管理 -> サービスアカウント -> サービスアカウントを作成
    • サービスアカウント名 : terraform
    • ロール : プロジェクトの編集者
    • サービスアカウント管理ロール : 自分の登録メールアドレス
  • 作成されたサービスアカウントを選択し、「鍵の作成」
    • キーのタイプ : Json

Credential が Json としてダウンロードされるので適当な場所に配置する。
Terraform の provider で指定する。

vi main.tf
provider "google" {
  project     = "BE-nishiyama-wataru"
  credentials = file("/Users/user/.config/gcloud/configurations/terraform.json")
  zone    = "us-central1-c"
}

Terraform の初期化。

terraform init

「Terraform has been successfully initialized! 」と出れば成功。

Google Compute Engine VM instance を作成

下記の Terraform チュートリアル通りにやる。

Instance 用のテンプレートを作成。

vi instance.tf
resource "google_compute_instance" "vm_instance" {
  name         = "terraform-instance"
  machine_type = "f1-micro"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    # A default network is created for all GCP projects
    network = google_compute_network.vpc_network.self_link
    access_config {
    }
  }
}

resource "google_compute_network" "vpc_network" {
  name                    = "terraform-network"
  auto_create_subnetworks = "true"
}

デプロイ。

terraform apply

Compute Engine -> VM インスタンスより、Instance が作成されたことを確認。

用が済んだら消しておく。

terraform destroy

参考

Getting Started with the Google Provider

GCP 事始め Cloud SDKの導入

GCP, Terraform

Posted by さいき