【実践編】Windows 11 WSL2 で始める Google Cloud + Terraform + Ansible 環境ガイド

Google Cloud 無料枠 Terraform Ansible

【実践編】Google Cloud + Terraform + Ansible 環境ガイド

WSL2 + Google Cloud + Terraform + Ansible 連携

前回のガイドで、Google Cloudにも環境は整いました。ですので今回は実践編を記述していきたいと思います。

この記事を読み終えると、以下の成果を自分の手で構築できます。

  • Google Cloud無料枠(Always Free)の範囲内だけで
  • TerraformとAnsibleによるインフラコード化を実現し
  • 安全に管理(IAP)され、世界に公開(HTTP)されたWebサーバー

1. プロジェクトの論理構造と実現される世界

「いいっすか、今回の肝は『玄関』を分けること。裏口(SSH)はIAPで鍵をかけ、表門(HTTP)は世界に開く。これがプロの設計っす!」 —— レオ

💡 LOGIC:管理と公開の分離(Security by Design)
本稿の目的は、単にWebサイトを公開することではありません。無料枠という制約下で、商用環境でも通用する「経路の分離」を実装することにあります。

  • 管理経路(SSH): IAP(Identity-Aware Proxy)経由。外部IPからの直接アクセスを遮断し、Identity(IAM)で保護。
  • 公開経路(HTTP): 全世界(0.0.0.0/0)に開放。Webサービスを届けるためのパブリックな道。

ここで重要なのは、IAPは単に「SSHを安全にする機能」ではなく、「管理経路をインターネットの脅威から消すための仕組み」であるという視点です。この「裏口(管理)」を秘匿し、「表門(サービス)」だけを出す設計こそが、インフラエンジニアの基礎素養となります。

graph TD
    User((全世界のユーザー)) -- HTTP:80 --> Firewall_Web[ファイアウォール: 80解放]
    Admin((管理者/WSL2)) -- IAP Tunnel --> Firewall_IAP[ファイアウォール: 22制限]
    Firewall_Web --> VM[GCE: e2-micro]
    Firewall_IAP --> VM
    VM --> Nginx[Nginx: It Works!]

2. 実装の急所と公式仕様の接続:Terraform編

💡 LOGIC:Always Free(無期限無料枠)を逸脱しない定義
Google Cloudの無料枠を確実に適用させるには、コードレベルでの「厳密な指定」が不可欠です。

# GCEインスタンスの定義
resource "google_compute_instance" "web_server" {
  name         = "web-server-free"
  machine_type = "e2-micro"      # 無料枠対象(us-central1, us-east1, us-west1限定)
  zone         = "us-central1-a" 
  tags         = ["http-server", "iap-ssh"]

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-12"
      size  = 10 # 30GB以内が無料対象
    }
  }

  network_interface {
    network = "default"
    access_config {
      network_tier = "STANDARD" # 無料転送枠を最大活用するための実務的選択
    }
  }

  metadata = {
    enable-oslogin = "TRUE"
  }
}

# HTTP(80)を全世界に解放する設定
resource "google_compute_firewall" "allow_http" {
  name    = "allow-http"
  network = "default"

  allow {
    protocol = "tcp"
    ports    = ["80"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["http-server"]
}

3. Ansible実装:Dynamic Inventory によるデータ変換

4. 実装の急所:IAPトンネルと OS Login ユーザー

5. ⚠️ 実務上の失敗回避:運用アンチパターン

6. IAM最小権限のTerraform定義

7. deploy.sh:一気通貫の実行スクリプト

Google Cloud 公式リファレンス

Terraform / Ansible 公式リファレンス


https://lab.juicyltd.biz/gcp-free-tier-terraform-ansible-setup-guide/

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です