🀄

[初心者向け]TerraformでGoogle Cloud Platformを操る

2024/02/12に公開

想定読者

  • 駆け出しインフラエンジニア
  • Git操作には慣れている
  • Terraformの操作はドキュメントを確認しながら遂行できる

前提

  • GoogleCloud Platform(以下、GCP)アカウントを開設している
  • GCPをセットアップしている
  • Terraformをセットアップしている

セットアップ覚書

GCPのセットアップ

TL;DR

  1. Projectの作成
  2. permissionsの設定
    1. サービスアカウントの作成
    2. 鍵(json)の作成とダウンロード
  3. APIを有効化

Terraformのセットアップ

TL;DR

brew tap hashicorp/tap
brew install hashicorp/tap/terraform

操る

Git CLIでリポジトリなどを作成する。GitCLIを入れてない人は、入れておくと快適な開発ライフを送れます。

gh repo create terraform-sandbox --public # 公開Gitリポジトリ作成
cd terraform-sandbox # リポジトリへ移動
touch variable.tf
touch main.tf

機微情報は、secret.tfvarsとして別ファイルとして管理する。
HOGEHOGEは適宜修正してください。

secret.tfvars
credential = "HOGEHOGE.json"
project    = "HOGEHOGE"

先ほど定義したtfvars用の変数ファイル variable.tf を用意

variable.tf
variable "credential" {
  description = "credential json file"
  type        = string
  sensitive   = true
}

variable "project" {
  description = "project id"
  type        = string
  sensitive   = true

}

エントリポイントとなる main.tf を作成する
VPCやVM、ディスクのリソース定義をここでしている。

main.tf
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "4.51.0"
    }
  }
}

provider "google" {
  credentials = file("${var.credential}")

  project = var.project
  region  = "us-central1"
  zone    = "us-central1-c"
}

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

resource "google_compute_instance" "vm_instance" {
  name         = "terraform-instance"
  machine_type = "f1-micro"
  tags         = ["web", "dev"]

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

  network_interface {
    network = google_compute_network.vpc_network.name
    access_config {
    }
  }
}

リソース定義が完了後、以下Terraformコマンドを実行していく

terraform init  # 初めて実行するときのおまじない
terraform plan  # リソース定義の内容の確認
terraform apply -var-file="secret.tfvars" # リソースの反映。確認されるので yes と入力してEnter

成功すると、GCP上にVPCとVMが作成されていることが確認できる。

最後にリソースの解放をしておく。

terraform destroy # リソースの反映。確認されるので yes と入力してEnter

作業したリポジトリは以下にあります。
https://github.com/hiyasichuka/terraform-sandbox/tree/main/learn-terraform-gcp

以上

参考サイト

https://developer.hashicorp.com/terraform/tutorials/gcp-get-started/google-cloud-platform-build
https://cloud.google.com/docs/terraform/get-started-with-terraform
https://cloud.google.com/docs/terraform/best-practices-for-terraform

Discussion