Terraform で GCE を構築、Apache へアクセス

概要

やりたいこと

Terraform を使って Google Compute Engine (GCE ) を作成する。

また、Apache を建ててアクセスできるようにする。

Terraform

GCE

Terraform サンプルを参考にやる。

scratch_disk と service_account を削る。

resource "google_compute_instance" "default" {
  name         = "test"
  machine_type = "e2-medium"
  zone         = "us-central1-a"

  tags = ["foo", "bar"]

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

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }

  metadata = {
    foo = "bar"
  }

  metadata_startup_script = "echo hi > /test.txt"
}

デプロイ。

terraform apply

Compute Engine コンソールから確認できる。

コンソールから ssh でログインし、metadata_startup_script で指定した操作が実行されていることを確認。

GCE + Apache

以下 2 つを追加。

  • tags に http-server を指定
  • metadata_startup_script に後述するスクリプトファイルを指定

tags はネットワークタグと呼ぶファイアウォールルールのことで、どのトラフィックを許可するか、を指定する。ファイアウォールルールにデフォルトのルールがある。

GCE 用 Terraform テンプレートを修正。

vi gce.tf
resource "google_compute_instance" "default" {  
  name         = "test"
  machine_type = "e2-medium"
  zone         = "us-central1-a"

  tags = ["http-server"]

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

  network_interface {
    network = "default"

    access_config {
    }
  }

  metadata = {
    foo = "bar"
  }

  metadata_startup_script =  file("/Users/USERNAME/work/gcp/test/test_lb_gce/apache.sh")
}

スタートアップ時に実行するシェルを作成。

vi apache.sh
!/bin/bash
sudo apt-get update && sudo apt -y install apache2
echo '<!doctype html><html><body><h1>Hello if you see this than you have apache running!</h1></body></html>' | sudo tee /var/www/html/index.html

デプロイ。

terraform apply

インスタンスに割り当てられた GIP にアクセスし、下記のような画面が表示されれば Apache へアクセスできている。

参考

terraform を使って GCP にロードバランサを設置してみた ~その①~

Deploying an Apache Server with Terraform- GCP

GCP, Terraform

Posted by さいき