Mendalami cara mendefinisikan resource, mengelola lifecycle, dan menangani dependency antar resource. Ini adalah inti dari penulisan konfigurasi Terraform.

Apa yang Akan Dipelajari? #

Resource adalah blok konfigurasi terpenting dalam Terraform — setiap resource merepresentasikan satu objek infrastruktur. Memahami cara mendefinisikan resource, mengelola dependency antar resource, mengatur lifecycle, dan menggunakan locking adalah keterampilan fundamental.

Artikel dalam Section Ini #

ArtikelTopik Utama
Apa itu Resource?Konsep resource sebagai unit dasar infrastruktur yang dikelola
DependencyMengelola urutan pembuatan dan ketergantungan antar resource
LifecycleMengontrol perilaku resource saat create, update, dan destroy
OperationCreate, Read, Update, Delete (CRUD) — lifecycle resource operations
LockingMencegah concurrent modification pada state file

Dependency Visualization #

flowchart TD
    subgraph Network Layer
        VPC["AWS VPC"]
        Subnet["Subnet"]
        SG["Security Group"]
    end

    subgraph Compute Layer
        EC2["EC2 Instance"]
        ASG["Auto Scaling Group"]
        ALB["Application LB"]
    end

    subgraph Data Layer
        RDS["RDS Database"]
        S3["S3 Bucket"]
    end

    VPC --> Subnet
    Subnet --> EC2
    Subnet --> ALB
    Subnet --> RDS
    SG --> EC2
    SG --> ALB
    SG --> RDS
    ALB --> ASG
    ASG --> EC2

    style Network Layer fill:#e3f2fd
    style Compute Layer fill:#e8f5e9
    style Data Layer fill:#fff3e0

Resource Lifecycle #

flowchart LR
    Create["Create<br/>Pembuatan"] --> Read["Read<br/>Pembacaan"]
    Read --> Update["Update<br/>Perubahan"]
    Update --> Destroy["Destroy<br/>Penghapusan"]
    Destroy -.->|Recreate| Create

    style Create fill:#e8f5e9
    style Read fill:#e3f2fd
    style Update fill:#fff3e0
    style Destroy fill:#ffebee

Meta-Argument Lifecycle #

resource "aws_instance" "web" {
  ami           = "ami-12345"
  instance_type = "t3.micro"

  lifecycle {
    create_before_destroy = true   # Buat baru sebelum hapus lama
    prevent_destroy       = false  # Lindungi dari destroy
    ignore_changes        = [tags] # Abaikan perubahan tags
    replace_triggered_by  = [var.ami_id]
  }
}

Setelah memahami resource, lanjutkan ke State untuk mengetahui bagaimana Terraform melacak resource, atau ke Variable untuk mempelajari parameterization.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact