🀄
[初心者向け]TerraformでGoogle Cloud Platformを操る
想定読者
- 駆け出しインフラエンジニア
- Git操作には慣れている
- Terraformの操作はドキュメントを確認しながら遂行できる
前提
- GoogleCloud Platform(以下、GCP)アカウントを開設している
- GCPをセットアップしている
- Terraformをセットアップしている
セットアップ覚書
TL;DR
- Projectの作成
- permissionsの設定
- サービスアカウントの作成
- 鍵(json)の作成とダウンロード
- APIを有効化
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
作業したリポジトリは以下にあります。
以上
参考サイト
Discussion