Apply #

terraform apply adalah perintah yang benar-benar mengubah infrastrukturmu. Semua yang sudah kamu rencanakan di plan dieksekusi di sini. Karena dampaknya nyata dan langsung, memahami cara apply bekerja — termasuk apa yang terjadi saat ada yang salah di tengah jalan — adalah perbedaan antara deployment yang terkontrol dan insiden yang tidak perlu.

Cara Apply Bekerja #

terraform apply — Urutan Eksekusi:

1. Generate execution plan (jika tidak ada saved plan)
        │
        ▼
2. Tampilkan plan dan minta konfirmasi
   (ketik "yes" untuk melanjutkan)
        │
        ▼
3. Eksekusi operasi sesuai dependency graph
   (resource independen dieksekusi paralel)
        │
        ├── Create: aws_vpc.main
        ├── (setelah VPC selesai) Create: aws_subnet.public
        ├── (setelah subnet selesai) Create: aws_instance.web
        │
        ▼
4. Update state setelah setiap resource selesai
   (state diupdate secara incremental, bukan di akhir)
        │
        ▼
5. Tampilkan ringkasan: "Apply complete! Resources: X added, Y changed, Z destroyed."

Poin penting di nomor 4: state diupdate setelah setiap resource, bukan di akhir setelah semua selesai. Ini penting untuk memahami apa yang terjadi saat apply gagal di tengah jalan.


Apply Interaktif vs Otomatis #

# Apply interaktif (default) — minta konfirmasi sebelum eksekusi
terraform apply

# Output:
# Plan: 3 to add, 1 to change, 0 to destroy.
#
# 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  ← ketik ini

# Apply otomatis — tanpa konfirmasi (untuk CI/CD)
terraform apply -auto-approve

# Apply dari saved plan — paling aman untuk production
terraform plan -out=tfplan
terraform apply tfplan
# Tidak ada konfirmasi, tidak ada plan baru — langsung eksekusi saved plan

Apa yang Terjadi Saat Apply Gagal di Tengah Jalan #

Ini adalah skenario yang paling sering menimbulkan kebingungan. Karena state diupdate secara incremental, kegagalan di tengah apply menghasilkan partial state.

SKENARIO: Apply gagal setelah membuat 2 dari 5 resource

Before apply:
  State: kosong

Apply dimulai:
  ✓ aws_vpc.main         → dibuat, state diupdate
  ✓ aws_subnet.public    → dibuat, state diupdate
  ✗ aws_instance.web     → GAGAL (misal: AMI tidak ditemukan)
  - aws_security_group   → tidak sempat dieksekusi
  - aws_rds.database     → tidak sempat dieksekusi

After failed apply:
  State: berisi aws_vpc.main dan aws_subnet.public
         (resource yang sudah berhasil dibuat)

Apa yang harus dilakukan:
  1. Perbaiki penyebab kegagalan (misal: ganti AMI ke yang valid)
  2. Jalankan terraform plan untuk melihat kondisi saat ini
  3. Jalankan terraform apply lagi
  → Terraform akan melanjutkan dari resource yang belum dibuat
  → VPC dan subnet tidak akan dibuat ulang (sudah ada di state)

Terraform tidak melakukan rollback otomatis. Ini disengaja — rollback otomatis bisa berbahaya jika resource yang sudah dibuat memiliki data di dalamnya.


Apply dengan Target #

-target memungkinkan apply hanya pada resource tertentu, mengabaikan resource lain.

# Apply hanya satu resource spesifik
terraform apply -target=aws_instance.web

# Apply seluruh module
terraform apply -target=module.vpc

# Apply beberapa resource sekaligus
terraform apply -target=aws_instance.web -target=aws_security_group.web
-target berguna untuk keadaan darurat atau debugging, tapi hindari penggunaan rutin. Ia bisa membuat state tidak konsisten dengan konfigurasi karena dependency antar resource tidak sepenuhnya dievaluasi. Jika kamu sering butuh -target, itu tanda bahwa konfigurasimu mungkin perlu di-refactor.

Paralelisme Apply #

Secara default, Terraform menjalankan hingga 10 operasi secara paralel. Ini bisa disesuaikan.

# Kurangi paralelisme (berguna jika provider punya rate limit)
terraform apply -parallelism=5

# Tingkatkan paralelisme (hati-hati dengan rate limit provider)
terraform apply -parallelism=20

# Untuk infrastruktur besar dengan banyak resource,
# rate limit provider AWS/GCP bisa menjadi bottleneck.
# Mengurangi -parallelism bisa membantu menghindari throttling.

Strategi Apply yang Aman untuk Production #

# WORKFLOW YANG DIREKOMENDASIKAN UNTUK PRODUCTION:

# 1. Generate dan simpan plan
terraform plan -out=tfplan

# 2. Review plan (bisa dibaca manusia)
terraform show tfplan

# 3. Jika ada CI/CD — submit untuk approval
# (PR review, Slack notification, dll.)

# 4. Setelah disetujui, apply dari saved plan
terraform apply tfplan

# 5. Hapus saved plan setelah selesai
rm tfplan

# Kenapa pakai saved plan?
# - Tidak ada plan ulang saat apply — apa yang di-review persis yang dieksekusi
# - Tidak ada kejutan dari perubahan kondisi antara review dan apply
# - Audit trail yang jelas: plan file bisa disimpan sebagai bukti

Membaca Output Apply #

$ terraform apply tfplan

aws_vpc.main: Creating...
aws_vpc.main: Creation complete after 2s [id=vpc-0abcdef1234567890]
aws_subnet.public: Creating...
aws_subnet.public: Creation complete after 1s [id=subnet-0abcdef1234567890]
aws_instance.web: Creating...
aws_instance.web: Still creating... [10s elapsed]
aws_instance.web: Still creating... [20s elapsed]
aws_instance.web: Creation complete after 23s [id=i-0abcdef1234567890]

Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

Outputs:

instance_public_ip = "54.123.45.67"

Terraform menampilkan progress secara real-time. Resource yang butuh waktu lama (seperti EC2 instance atau RDS) akan menampilkan “Still creating…” setiap 10 detik.


Ringkasan #

  • State diupdate incremental setiap resource selesai — bukan di akhir. Kegagalan di tengah apply menghasilkan partial state yang valid.
  • Tidak ada rollback otomatis — setelah resource dibuat, Terraform tidak menghapusnya jika resource berikutnya gagal.
  • Gunakan saved plan untuk production — pastikan yang di-apply adalah persis yang sudah di-review.
  • -auto-approve hanya untuk CI/CD yang sudah ada review process — jangan digunakan langsung di terminal production.
  • -target adalah alat darurat, bukan workflow rutin — penggunaan berlebihan bisa menyebabkan state yang tidak konsisten.
  • Jika apply gagal di tengah jalan, perbaiki penyebabnya lalu apply ulang — Terraform akan melanjutkan dari resource yang belum selesai.

← Sebelumnya: Plan   Berikutnya: Destroy →

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