4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TerraformでIaCを始める

Posted at

はじめに

Google Cloud上でTerraformを少しだけ触ったのでメモです。

やったことは下記の4つです。

  1. VPCをつくる
  2. subnetをつくる
  3. Compute Engineのインスタンスを建てる
  4. 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はすごい。

参考文献

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?