Apa Itu Terraform? Infrastructure as Code Dijelaskan
Jawaban singkat: Terraform adalah alat infrastructure as code (IaC), yang awalnya berasal dari HashiCorp, yang memungkinkan Anda mendefinisikan infrastruktur cloud dan on-premises dalam file konfigurasi yang mudah dibaca…
In this guide
- Apa itu infrastructure as code, dan mengapa itu penting?
- Bagaimana Terraform sebenarnya bekerja?
- Apa itu provider?
- Apa itu state Terraform?
- Seperti apa konfigurasi sederhana?
- Terraform vs. alat lain
- Apa saja kasus penggunaan Terraform yang umum?
Jawaban singkat: Terraform adalah alat infrastructure as code (IaC), yang awalnya berasal dari HashiCorp, yang memungkinkan Anda mendefinisikan infrastruktur cloud dan on-premises dalam file konfigurasi yang mudah dibaca manusia lalu membuat, mengubah, dan mengontrol versinya dengan aman. Anda mendeskripsikan sumber daya yang Anda inginkan, seperti server, jaringan, dan basis data, dalam bahasa deklaratif bernama HCL; Terraform membandingkan keadaan yang diinginkan itu dengan apa yang benar-benar ada dan hanya membuat perubahan yang diperlukan. Ia bekerja di banyak platform melalui plugin yang disebut provider, menjadikannya salah satu alat yang paling banyak digunakan dalam DevOps dan cloud engineering modern.
Apa itu infrastructure as code, dan mengapa itu penting?
Infrastructure as code berarti mengelola server, jaringan, dan sumber daya lain melalui file konfigurasi, alih-alih mengklik melalui konsol web secara manual. Manfaatnya besar. Infrastruktur Anda menjadi dapat diulang, karena file yang sama menghasilkan lingkungan yang sama setiap kali. Ia menjadi dapat ditinjau, karena perubahan melewati kontrol versi dan code review seperti halnya kode aplikasi. Dan ia menjadi dapat dipulihkan, karena Anda bisa membangun kembali sebuah lingkungan dari file jika terjadi kegagalan. Terraform adalah salah satu cara paling populer untuk mempraktikkan IaC, dan pendekatan ini berada di jantung apa yang dilakukan DevOps engineer sehari-hari.
Bagaimana Terraform sebenarnya bekerja?
Terraform mengikuti siklus yang jelas dan dapat diulang. Anda menulis konfigurasi, melihat pratinjau perubahan, lalu menerapkannya. Alur kerja intinya biasanya diringkas sebagai write, plan, apply.
- Write: Anda mendeklarasikan sumber daya dalam file .tf menggunakan HCL, misalnya sebuah mesin virtual, sebuah storage bucket, dan sebuah jaringan.
- Init: Menjalankan terraform init mengunduh provider yang dibutuhkan konfigurasi Anda dan menyiapkan working directory.
- Plan: Menjalankan terraform plan menunjukkan dengan tepat apa yang akan dibuat, diubah, atau dihancurkan Terraform, tanpa menyentuh apa pun dulu. Pratinjau ini adalah salah satu fitur keamanan Terraform yang paling dihargai.
- Apply: Menjalankan terraform apply mengeksekusi rencana dan menyediakan sumber daya nyata, lalu mencatat hasilnya dalam state.
- Destroy: Menjalankan terraform destroy membongkar segala sesuatu yang dikelola konfigurasi, yang berguna untuk lingkungan sementara atau uji coba.
Apa itu provider?
Sebuah provider adalah plugin yang mengajari Terraform cara berkomunikasi dengan API sebuah platform tertentu. Ada provider untuk cloud besar seperti Amazon Web Services, Microsoft Azure, dan Google Cloud, serta untuk layanan seperti Kubernetes, GitHub, Cloudflare, dan banyak basis data. Karena model plugin ini, alat dan alur kerja yang sama bisa mengelola sistem yang sangat berbeda. Anda mendeklarasikan provider mana yang Anda butuhkan, Terraform mengunduhnya selama init, dan sejak itu Anda mendeskripsikan sumber daya menggunakan tipe sumber daya provider tersebut. Keluasan ini adalah alasan besar Terraform menjadi standar industri dan mengapa ia begitu sering muncul dalam perangkat alat seorang cloud engineer.
Apa itu state Terraform?
State adalah tempat Terraform memperoleh banyak kekuatannya, dan juga tempat para pemula menemui masalah terbanyak. Ketika Terraform membuat sumber daya, ia mencatat apa yang dibuatnya dalam sebuah file state yang memetakan konfigurasi Anda ke objek dunia nyata. Pada jalannya berikutnya, Terraform membaca state untuk memahami apa yang sudah ada, sehingga ia bisa menghitung kumpulan perubahan yang minimal, bukan membuat ulang semuanya.
Dua aturan praktis mengikuti dari hal ini. Pertama, file state dapat berisi data sensitif, seperti kata sandi basis data, sehingga harus dilindungi. Kedua, ketika sebuah tim berbagi infrastruktur, semua orang harus menggunakan state yang sama, sehingga ia disimpan dalam backend remote (misalnya, penyimpanan objek cloud) dengan penguncian untuk mencegah dua orang menerapkan perubahan yang bertentangan sekaligus. Mengedit state secara manual berisiko dan umumnya dihindari. Menghormati state adalah kebiasaan terpenting untuk bekerja dengan Terraform secara aman.
Seperti apa konfigurasi sederhana?
HCL dirancang agar mudah dibaca. Sebuah konfigurasi mendeklarasikan sumber daya dalam blok, masing-masing dengan sebuah tipe, sebuah nama, dan pengaturan. Anda mereferensikan satu sumber daya dari sumber daya lain sehingga Terraform bisa menentukan urutan yang benar, misalnya membuat jaringan sebelum server yang menggunakannya. Anda juga bisa menggunakan variable untuk menghindari hardcoding nilai, output untuk memunculkan hasil yang berguna seperti alamat IP, dan module untuk mengemas dan menggunakan kembali kelompok sumber daya. Karena file-nya berupa teks biasa, mereka berada dalam kontrol versi bersama segala sesuatu yang lain, yang terhubung secara alami dengan panduan kami tentang apa itu Git.
Terraform vs. alat lain
Terraform sering dibandingkan dengan alat infrastruktur lain, dan perbedaannya penting saat memilih yang tepat.
| Alat | Tujuan utama | Pendekatan | Penggunaan tipikal dengan Terraform |
|---|---|---|---|
| Terraform | Menyediakan infrastruktur | Deklaratif, multi-cloud | Lapisan provisioning itu sendiri |
| OpenTofu | Menyediakan infrastruktur | Deklaratif; fork open-source dari Terraform | Alternatif drop-in untuk tim yang lebih memilih MPL 2.0 |
| Ansible | Mengonfigurasi mesin yang sudah ada | Prosedural, tanpa agen | Mengonfigurasi server setelah Terraform membuatnya |
| CloudFormation | Menyediakan infrastruktur | Deklaratif, khusus AWS | Alternatif asli AWS |
| Pulumi | Menyediakan infrastruktur | Deklaratif melalui bahasa tujuan umum | Alternatif untuk tim yang lebih memilih Python, TypeScript, dll. |
Poin penting untuk 2026: pada Agustus 2023, HashiCorp mengubah lisensi Terraform dari MPL 2.0 yang open-source menjadi Business Source License (BSL), yang membatasi penggunaan perangkat lunak untuk membangun produk yang bersaing secara langsung. Sebagai tanggapan, beberapa perusahaan menciptakan OpenTofu, sebuah fork MPL 2.0 yang kini dikelola oleh Linux Foundation dan diterima ke dalam Cloud Native Computing Foundation pada 2025. OpenTofu membaca HCL yang sama, menggunakan provider yang sama, dan menulis file state yang kompatibel, sehingga bagi sebagian besar pengguna keduanya dapat saling dipertukarkan dalam pekerjaan sehari-hari. Yang mana yang dipilih sebuah tim sebagian besar adalah keputusan tata kelola dan lisensi. Perlakukan nomor versi tertentu sebagai sesuatu yang cepat berubah dan verifikasi rilis saat ini sebelum mengandalkan fitur tertentu.
Apa saja kasus penggunaan Terraform yang umum?
- Mendirikan lingkungan cloud seperti development, staging, dan production yang identik dan dapat direproduksi.
- Deployment multi-cloud atau hybrid, menggunakan satu alur kerja di lebih dari satu provider.
- Lingkungan sekali pakai untuk pengujian atau demo yang bisa dibuat dan dihancurkan sesuai permintaan.
- Mengelola layanan pendukung seperti record DNS, kebijakan akses, dan cluster Kubernetes.
Karena ia mendefinisikan seluruh lingkungan sebagai kode, Terraform adalah keterampilan inti bagi siapa pun yang merancang sistem besar, itulah sebabnya ia muncul dalam jalur menuju menjadi cloud architect dan dalam praktik keandalan yang dijelaskan dalam perbandingan kami tentang DevOps dan SRE.
Apa itu module, dan mengapa tim menggunakannya?
Seiring konfigurasi bertumbuh, menyalin blok yang sama di seluruh proyek menjadi tidak terkelola. Module memecahkan ini dengan mengemas sekelompok sumber daya menjadi satu unit yang dapat digunakan kembali dengan input dan output yang terdefinisi. Misalnya, sebuah tim mungkin membangun module yang membuat jaringan standar dengan subnet, routing, dan aturan keamanan yang tepat, lalu menggunakannya kembali di setiap lingkungan hanya dengan meneruskan variable yang berbeda. Module mendorong konsistensi, mengurangi kesalahan salin-tempel, dan memungkinkan sebuah tim mengkodekan praktik terbaiknya satu kali. Registry publik meng-host ribuan module komunitas untuk pola umum, meskipun tim production sering menulis dan mengontrol versi module mereka sendiri. Berpikir dalam module adalah tanda kematangan dengan Terraform, dan ia mencerminkan bagaimana software yang baik difaktorkan menjadi komponen yang dapat digunakan kembali.
Apa manfaat dan trade-off utama Terraform?
Kekuatan Terraform menjelaskan popularitasnya, tetapi perlu juga jujur tentang trade-off-nya.
- Manfaat: konsistensi multi-cloud. Satu alur kerja dan bahasa mengelola banyak platform, sehingga tim tidak perlu mempelajari ulang alat baru untuk setiap provider.
- Manfaat: pratinjau yang aman. Langkah plan menunjukkan setiap perubahan sebelum terjadi, yang mencegah banyak kesalahan mahal.
- Manfaat: dapat diulang dan diaudit. Karena segalanya adalah kode dalam kontrol versi, lingkungan dapat direproduksi dan setiap perubahan dapat ditelusuri.
- Trade-off: kompleksitas state. Mengelola state, backend, dan penguncian dengan benar membutuhkan disiplin dan merupakan sumber masalah dunia nyata yang paling umum.
- Trade-off: kurva pembelajaran. Pola pikir deklaratif dan detail khusus provider membutuhkan waktu untuk dipahami, terutama bagi mereka yang terbiasa mengklik melalui konsol.
- Trade-off: drift. Jika seseorang mengubah sumber daya secara manual di luar Terraform, dunia nyata dan state bisa menyimpang, sehingga memerlukan kehati-hatian untuk merekonsiliasi.
Bagaimana Terraform cocok ke dalam pipeline CI/CD?
Dalam tim yang matang, Terraform jarang dijalankan dari laptop untuk perubahan production. Sebaliknya, konfigurasi berada dalam repositori Git, dan pipeline continuous integration menjalankan terraform plan secara otomatis pada setiap pull request sehingga peninjau bisa melihat dengan tepat apa yang akan berubah. Setelah disetujui, sebuah langkah otomatis menjalankan terraform apply terhadap lingkungan target. Ini membawa disiplin tinjauan, pengujian, dan audit yang sama ke infrastruktur seperti yang sudah diterapkan tim pada kode aplikasi. Ia juga memaksa agar state berada dalam backend remote bersama, bukan di mesin individu mana pun, yang penting begitu lebih dari satu orang terlibat. Pendekatan yang mengutamakan otomatisasi ini adalah ciri khas tim platform modern.
Bagaimana seharusnya pemula mulai dengan Terraform?
Mulailah dengan satu provider yang sudah Anda pahami, idealnya sebuah cloud yang pernah Anda gunakan melalui konsolnya. Instal Terraform (atau OpenTofu), buat satu sumber daya kecil seperti storage bucket, dan jalani proses init, plan, dan apply untuk merasakan alur kerjanya. Perhatikan dengan saksama keluaran plan sebelum setiap apply; membaca plan dengan teliti adalah kebiasaan profesional yang layak dibangun sejak dini. Simpan konfigurasi Anda di Git sejak hari pertama, jauhkan rahasia dari file Anda, dan beralih ke backend remote untuk state segera setelah lebih dari satu orang terlibat. Hindari godaan untuk menyalin konfigurasi besar dan kompleks yang tidak Anda pahami; langkah-langkah kecil yang bisa Anda jelaskan akan mengajari Anda jauh lebih banyak.
Apakah Terraform layak dipelajari?
Bagi siapa pun yang menuju DevOps, cloud, atau platform engineering, Terraform adalah salah satu keterampilan paling berharga yang tersedia. Ia diadopsi secara luas, dapat dipindahkan antar cloud, dan menjadi inti bagaimana tim modern membangun dan mengubah infrastruktur dengan aman. Model deklaratif membutuhkan waktu sebentar untuk dipahami, dan manajemen state menuntut penghormatan, tetapi imbalannya besar: Anda memperoleh kemampuan untuk mendeskripsikan seluruh lingkungan sebagai kode yang dapat ditinjau dan diulang. Entah Anda pada akhirnya menggunakan Terraform atau fork OpenTofu-nya, konsepnya tetap berlaku, membuat pembelajaran itu tahan lama terlepas dari bagaimana perangkatnya berkembang.
Ready to earn your certification?
Boost eLearning offers Live Labs, a Pass Guarantee, and online, live virtual, and on-site delivery.
