Belajar OpenTofu - Core Workflow, CLI Commands & Migrasi dari Terraform
Episode 2 of 21

Belajar OpenTofu - Core Workflow, CLI Commands & Migrasi dari Terraform

Di episode ini kalian menjalankan core workflow OpenTofu: init, plan, apply, dan destroy. Kita juga membahas OpenTofu Registry tempat provider dan modul diunduh, serta prosedur migrasi drop-in replacement dari Terraform tanpa mengubah satu baris pun HCL.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 1 kita membahas sejarah: lahirnya OpenTofu dari perubahan lisensi Terraform, dukungan Linux Foundation, dan komitmen backward compatibility 1:1. Komitmen itu bukan sekadar janji — di episode 2 ini kalian akan membuktikannya langsung dengan menjalankan workflow inti OpenTofu dari awal sampai akhir.

Ada tiga hal yang dibahas: core workflow (init → plan → apply → destroy), OpenTofu Registry tempat provider dan modul diunduh, serta prosedur migrasi dari Terraform yang mulus. Di akhir episode, kalian bisa mengambil project Terraform yang sudah ada dan menjalankannya dengan tofu tanpa mengubah apa pun.

Pembahasan Utama

Core Workflow: init, plan, apply, destroy

Workflow OpenTofu mengikuti siklus empat langkah yang menjadi bahasa universal tim IaC di mana pun.

CommandFungsiFrekuensi
tofu initMengunduh provider, modul, dan menyiapkan backendSekali per project, atau saat ada perubahan
tofu planMenghitung pratinjau perubahan tanpa menyentuh cloudSetiap akan melakukan perubahan
tofu applyMengeksekusi perubahan yang disetujui ke cloudSetelah plan disetujui
tofu destroyMenghapus seluruh resource yang dikelolaSaat environment tidak dibutuhkan lagi

tofu init

tofu init adalah gerbang pertama. Ia membaca blok required_providers, mengunduh provider dari registry, mencatat versi ke .terraform.lock.hcl, dan menyiapkan backend tempat state disimpan.

Contoh output tofu init
tofu init
 
Initializing the backend...
 
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 5.0"...
- Installing hashicorp/aws v5.94.0...
- Installed hashicorp/aws v5.94.0 (signed by HashiCorp)
 
OpenTofu has been successfully initialized!

tofu plan

tofu plan menjalankan dry run. Ia membandingkan state aktual dengan kode HCL, lalu menghasilkan rencana aksi. Inilah safety net utama kalian — semua kesalahan di sini tidak merusak cloud.

Contoh output tofu plan
tofu plan
 
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create
 
  # aws_instance.web will be created
  + resource "aws_instance" "web" {
      + ami           = "ami-0c55b159cbfafe1f0"
      + instance_type = "t3.micro"
    }
 
Plan: 1 to add, 0 to change, 0 to destroy.

Tip

Biasakan memanggil tofu plan sebelum tofu apply setiap saat — terutama di tim. Plan bisa disimpan dengan tofu plan -out=plan.tfplan agar apply hanya mengeksekusi rencana yang sudah disetujui, bukan menghitung ulang dari kode terbaru.

tofu apply

tofu apply adalah eksekutor. Ia membuat, mengubah, atau menghapus resource di cloud sesuai plan. OpenTofu menampilkan ringkasan dan meminta konfirmasi sebelum mulai (bisa dilewati dengan flag -auto-approve).

Akhir output tofu apply
aws_instance.web: Creating...
aws_instance.web: Still creating... [10s elapsed]
aws_instance.web: Creation complete after 17s
 
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

tofu destroy

tofu destroy menjalankan plan kebalikannya: menghapus semua resource yang tercatat di state. Ini krusial untuk environment percobaan dan pengendalian biaya.

Hapus semua resource
tofu destroy

OpenTofu Registry

Ketika tofu init mencari provider atau modul, ia berbelanja di registry.opentofu.org. Registry ini adalah katalog publik berisi provider resmi (seperti hashicorp/aws) dan modul komunitas yang bisa dipakai ulang. Berbeda dengan "semua harus dibuat sendiri", registry inilah yang membuat IaC begitu produktif.

Provider tetap bersumber dari hashicorp/aws — alamat yang kompatibel dengan Terraform — sehingga sebagian besar ekosistem langsung berfungsi. Kalian akan melihat deklarasi provider ini secara detail di episode 3. Modul juga bisa dipanggil dari registry, Git, atau path lokal — untuk episode ini cukup tahu bahwa lokasi unduh dikendalikan oleh blok required_providers dan atribut source pada modul.

Migrasi Mulus dari Terraform (Drop-in Replacement)

Ini bagian yang paling dicari banyak engineer: cara pindah dari Terraform ke OpenTofu tanpa mengganti satu baris pun HCL. Karena OpenTofu dibangun dari fork Terraform 1.5.x dan mempertahankan kompatibilitas 1:1, prosedurnya sangat sederhana.

Langkah 1: ganti binary. Pastikan tofu terpasang dan ganti pemanggilan terraform.

Langkah 2: jalankan workflow biasa. tofu init, tofu plan, tofu apply membaca HCL dan state yang sama persis.

Langkah 3: untuk backend remote, tofu init -migrate-state menyalin state ke backend yang sama tanpa kehilangan data.

Inisialisasi ulang dengan migrasi state
tofu init -migrate-state

Fakta yang sering mengejutkan: OpenTofu bisa membaca .terraform.lock.hcl yang dihasilkan Terraform, jadi kalian tidak perlu menghapus atau men-generate ulang file lock.

Alias terraform=tofu

Banyak skrip yang masih memanggil terraform. Untuk transisi mulus, gunakan alias:

Alias agar command lama tetap jalan
alias terraform=tofu
 
terraform --version   # sebenarnya mengeksekusi OpenTofu

Tambahkan baris alias ini ke ~/.bashrc atau ~/.zshrc agar permanen. Untuk repo dengan banyak skrip CI, cara ini membuat transisi "diam-diam" — tidak ada yang berubah dari sudut pandang script.

Warning

Beberapa hal perlu perhatian saat migrasi: skrip yang memanggil literal terraform di CI (ganti dengan tofu atau alias), dan backend Terraform Cloud yang bersifat proprietary — untuk itu pertimbangkan backend lain seperti S3 yang akan dibahas di episode 5.

Penutup

Ringkasan episode 2:

  • Core workflow OpenTofu: tofu inittofu plantofu applytofu destroy.
  • Registry publik registry.opentofu.org menyediakan provider dan modul, dengan hashicorp/aws yang tetap kompatibel.
  • Migrasi dari Terraform mulus: ganti binary, jalankan workflow yang sama, dan baca lock file yang sudah ada.
  • Alias terraform=tofu membuat transisi transparan untuk skrip lama.

Sekarang kalian sudah bisa menjalankan OpenTofu end-to-end. Di episode 3 berikutnya kita masuk lebih dalam ke bahasa konfigurasi: deklarasi provider, resource, dan data sources — fondasi HCL yang akan kalian pakai di hampir setiap file .tf. Sampai jumpa!