はじめに
Google Cloud上でTerraformを少しだけ触ったのでメモです。
やったことは下記の4つです。
- VPCをつくる
- subnetをつくる
- Compute Engineのインスタンスを建てる
- ssh接続できるようにする
Terraformを利用できるようにする
Google Cloud上では何もしなくてもCloud ShellからTerraformが利用できます。
Cloud Shellを開くとそのままTerraformが利用できる 2024.02.18
$ terraform --version
Terraform v1.7.2
on linux_amd64
Your version of Terraform is out of date! The latest version
is 1.7.3. You can update by downloading from https://www.terraform.io/downloads.html
Terraformのソースを作成する
とても親切なチュートリアルがあったので、ほぼそのまま利用させてもらいます。
server-on-google-cloud/main.tf
provider "google" {
}
resource "google_compute_network" "vpc_network" {
name = "my-custom-mode-network"
auto_create_subnetworks = false
mtu = 1460
}
resource "google_compute_subnetwork" "default" {
name = "my-custom-subnet"
ip_cidr_range = "10.0.1.0/24"
region = "us-west1"
network = google_compute_network.vpc_network.id
}
# Create a single Compute Engine instance
resource "google_compute_instance" "default" {
name = "flask-vm"
machine_type = "f1-micro"
zone = "us-west1-a"
tags = ["ssh"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
# Install Flask
metadata_startup_script = "sudo apt-get update; sudo apt-get install -yq build-essential python3-pip rsync; pip install flask"
network_interface {
subnetwork = google_compute_subnetwork.default.id
access_config {
# Include this section to give the VM an external IP address
}
}
}
# [START vpc_flask_quickstart_ssh_fw]
resource "google_compute_firewall" "ssh" {
name = "allow-ssh"
allow {
ports = ["22"]
protocol = "tcp"
}
direction = "INGRESS"
network = google_compute_network.vpc_network.id
priority = 1000
source_ranges = ["0.0.0.0/0"]
target_tags = ["ssh"]
}
# [END vpc_flask_quickstart_ssh_fw]
Terraform実行
実行する前に Cloud Shell に上記のソースコードを持っていきます。Githubに置いたのでそこからcloneしました。
git clone https://github.com/talomina/server-on-google-cloud
cd server-on-google-cloud/
terraform init で初期化
Cloud Shell上でmain.tfのあるフォルダで初期化を行います。
init
terraform init
terraform plan で構築する環境の確認
plan
terraform plan
もしコードにおかしいところがあれば、ここでエラーが表示されます。
terraform apply で構築
apply
terraform apply
すると下記のように効かれるので、yesと入力します。
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
terraform destroy で撤収
これだけで作った環境を全て撤収することができるというのがIaCの醍醐味だと思います。
destroy
terraform destroy
おわりに
Google Cloudはコンソール画面から操作する時に「同様のコード」としてTerraformでやった場合のソースコードを出してくれます。これはExcelで「操作の記録」としてマクロを作成してくれるあれと似ていると、個人的には思いました。
IaCはすごい。
参考文献