πŸ“¦ Lab 3: Terraform Modules (λͺ¨λ“ˆ ν™œμš©)

λͺ©ν‘œ: Terraform Registry에 μžˆλŠ” κ²€μ¦λœ μ˜€ν”ˆμ†ŒμŠ€ λͺ¨λ“ˆ(terraform-google-modules)을 μ‚¬μš©ν•˜μ—¬ λ³΅μž‘ν•œ λ„€νŠΈμ›Œν¬ ꡬ성을 단 λͺ‡ μ€„λ‘œ κ΅¬ν˜„ν•΄λ΄…λ‹ˆλ‹€.

1. main.tf μž‘μ„± (Registry λͺ¨λ“ˆ μ‚¬μš©)

μž‘μ—… 디렉토리: terraform-labs/lab3/

provider "google" {
  region = "us-central1"
}
 
# Google이 μ œκ³΅ν•˜λŠ” 곡식 λ„€νŠΈμ›Œν¬ λͺ¨λ“ˆ μ‚¬μš©
module "network" {
  source  = "terraform-google-modules/network/google"
  version = "~> 6.0"
 
  network_name = "terraform-vpc-module"
  project_id   = "[YOUR_PROJECT_ID]" # ✨ 본인 ν”„λ‘œμ νŠΈ ID μž…λ ₯ ν•„μˆ˜
 
  subnets = [
    {
      subnet_name   = "subnet-01"
      subnet_ip     = "10.10.10.0/24"
      subnet_region = "us-central1"
    },
    {
      subnet_name   = "subnet-02"
      subnet_ip     = "10.10.20.0/24"
      subnet_region = "us-west1"
    }
  ]
}
 
# λͺ¨λ“ˆμ΄ λ§Œλ“  μ„œλΈŒλ„·μ— VM 생성
resource "google_compute_instance" "vm_module" {
  name         = "vm-from-module"
  machine_type = "e2-micro"
  zone         = "us-central1-a"
 
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
 
  network_interface {
    # λͺ¨λ“ˆμ˜ 좜λ ₯κ°’(Output) μ°Έμ‘° 방식
    subnetwork = module.network.subnets_names[0] 
    access_config {}
  }
}

2. μ‹€μŠ΅ κ°€μ΄λ“œ

  1. terraform init: λͺ¨λ“ˆ(terraform-google-modules/network/google)을 λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€. μ‹œκ°„μ΄ 쑰금 κ±Έλ¦½λ‹ˆλ‹€.
  2. terraform apply:
    • λ‚΄κ°€ 일일이 google_compute_network, subnetwork, firewall λ¦¬μ†ŒμŠ€λ₯Ό μ •μ˜ν•˜μ§€ μ•Šμ•„λ„ λͺ¨λ“ˆμ΄ μ•Œμ•„μ„œ λ‹€ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.
    • Tip: λͺ¨λ“ˆμ„ μ“°λ©΄ μ½”λ“œκ°€ 훨씬 κ°„κ²°ν•΄μ§‘λ‹ˆλ‹€.
  3. terraform destroy: μƒμ„±λœ λͺ¨λ“  λ¦¬μ†ŒμŠ€(VPC, μ„œλΈŒλ„· λ“±) 일괄 μ‚­μ œ.

3. πŸ€– Gemini Prompt Tip (정석 μš”μ²­λ²•)

λͺ¨λ“ˆ μ‚¬μš© μ‹œ μž…λ ₯ λ³€μˆ˜(Input Variables)λ₯Ό λͺ…ν™•νžˆ μ§€μ •ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

Prompt:

Generate Terraform configuration using the 'terraform-google-modules/network/google' module based on the following specifications:
 
*   Module Source: terraform-google-modules/network/google
*   Network Name: terraform-vpc-module
*   Project ID: [YOUR_PROJECT_ID]
*   Subnet 1: subnet-01 (10.10.10.0/24 in us-central1)
*   Subnet 2: subnet-02 (10.10.20.0/24 in us-west1)
*   Output: Use the created subnet-01 for a new e2-micro VM instance.

Geminiκ°€ λ³΅μž‘ν•œ λͺ¨λ“ˆ 블둝(module "network" { ... })을 μ •ν™•ν•œ λ¬Έλ²•μœΌλ‘œ μž‘μ„±ν•΄μ€λ‹ˆλ‹€.


Supported by gemini-3.0-pro preview