Terraform adalah alat sumber terbuka infrastruktur sebagai kode (IaC) yang dibuat oleh HashiCorp. Terraform memungkinkan pengembang untuk menyediakan, memperbarui, dan menghancurkan komponen infrastruktur lokal dan cloud, seperti mesin virtual dan klaster Kubernetes, dengan menulis file konfigurasi yang dapat dibaca manusia.
HashiCorp Terraform menggunakan bahasa deklaratif daripada bahasa prosedural. Pengguna menjelaskan status akhir yang diinginkan untuk sumber daya infrastruktur, dan Terraform menangani sisanya. Terraform secara otomatis membuat rencana eksekusi, mengidentifikasi dependensi antara sumber daya dan komponen penyediaan dalam urutan yang benar. Misalnya, jika mesin virtual (VM) bergantung pada cloud privat virtual (VPC), Terraform memastikan VPC dibuat sebelum menyediakan VM.
Sebaliknya, dengan bahasa prosedural, pengembang harus menulis petunjuk langkah demi langkah untuk menyediakan infrastruktur.
File konfigurasi Terraform dapat dibuat versinya, digunakan kembali, dan dibagikan. Terraform mengelola komponen tingkat rendah, seperti sumber daya komputasi dan penyimpanan, dan komponen tingkat tinggi, seperti entri Sistem Nama Domain (DNS) dan fitur perangkat lunak sebagai layanan (SaaS).
Pada Februari 2025, IBM mengakuisisi HashiCorp dan penawarannya, termasuk Terraform.
Terraform membuat dan mengelola sumber daya pada platform cloud dan layanan lainnya melalui antarmuka pemrograman aplikasi (API). Terraform bekerja dengan hampir semua platform atau layanan dengan API yang dapat diakses, termasuk Amazon Web Services (AWS), Microsoft Azure, Google Cloud, GitHub, IBM Cloud, dan Docker.
Alur kerja inti Terraform terdiri dari tiga tahap:
Pengembang menulis file konfigurasi yang dapat dibaca manusia untuk menentukan konfigurasi sumber daya untuk infrastruktur yang mereka inginkan. File ini bersifat deklaratif, artinya pengembang menggambarkan infrastruktur yang mereka inginkan tetapi bukan cara menyediakannya. Â
Misalnya, jika pengembang ingin menyediakan infrastruktur untuk menerapkan aplikasi yang di-host cloud, mereka mungkin menentukan bahwa mereka memerlukan mesin virtual di cloud privat virtual, dengan grup keamanan terkait dan penyeimbang beban.
File konfigurasi tunggal dapat mengelola sumber daya yang terletak di beberapa penyedia cloud dan layanan.
Terraform menganalisis konfigurasi tertulis yang disediakan oleh pengembang dan kondisi infrastruktur organisasi saat ini. Kemudian membuat rencana eksekusi yang menjelaskan bagaimana itu akan mencapai status akhir yang diinginkan dari status saat ini.
Rencana itu sendiri berbentuk daftar infrastruktur yang akan dibuat, diperbarui, atau dihancurkan oleh Terraform untuk menyelaraskan dunia nyata dengan konfigurasi yang dijelaskan pengembang.
Pertimbangkan contoh sebelumnya dari pengembang yang menerapkan aplikasi pada mesin virtual di cloud privat virtual. Rencana Terraform mungkin mencakup tindakan seperti:
Pengembang dapat meninjau dan memodifikasi rencana sebelum Terraform mengeksekusinya.
Ketika rencana disetujui, Terraform melakukan operasi yang diusulkan dalam urutan yang benar, dengan menghormati semua ketergantungan sumber daya. Artinya, jika sumber daya A bergantung pada sumber daya B, Terraform memastikan bahwa sumber daya B dibuat sebelum sumber daya A.
Misalnya, jika pengembang memperbarui properti VPC dan mengubah jumlah mesin virtual dalam VPC tersebut, Terraform akan membuat ulang VPC dengan properti yang diperbarui sebelum menskalakan mesin virtual.
Komponen utama Terraform meliputi:
File konfigurasi adalah cara pengembang menentukan sumber daya yang diinginkan untuk lingkungan lokal dan cloud. File-file ini memberi tahu Terraform penyedia apa yang akan digunakan, infrastruktur apa yang harus dibuat, dan data apa yang akan diambil. Pengembang dapat memodifikasi, menggunakan kembali, dan berbagi file konfigurasi.
Pengembang dapat menulis file konfigurasi dalam JSON atau dalam HashiCorp Configuration Language (HCL). HCL menggunakan sintaks deklaratif: Pengembang menjelaskan infrastruktur yang diinginkan daripada menentukan cara menyediakannya. HCL menyerupai pasangan kunci-nilai JSON, tetapi dioptimalkan untuk keterbacaan manusia.
Modul adalah kontainer yang dapat digunakan kembali untuk beberapa sumber daya yang biasanya digunakan bersama. Sebagai contoh, sebuah modul dapat berisi mesin virtual, database, konfigurasi jaringan, dan pengaturan keamanan multi-fungsi. Modul disimpan sebagai kumpulan file konfigurasi.
Modul Terraform memungkinkan pengembang untuk membuat infrastruktur yang kompleks tanpa memulai dari awal setiap saat. Sebaliknya, mereka dapat menggunakan modul yang sudah menggambarkan pengaturan infrastruktur yang mereka butuhkan.
File status Terraform adalah representasi dari keadaan infrastruktur saat ini, termasuk komponen, konfigurasi, dan hubungan antar sumber daya. Â
Ketika Terraform membuat rencana, itu dimulai dengan membandingkan file konfigurasi dengan file status. Hal ini memungkinkan Terraform untuk menentukan perubahan yang perlu dilakukan untuk membuat infrastruktur saat ini sejalan dengan konfigurasi yang diinginkan.
Penyedia Terraform adalah plug-in yang memungkinkan Terraform berinteraksi dengan API untuk layanan dan platform eksternal. Penyedia memungkinkan Terraform untuk mengelola sumber daya di lingkungan infrastruktur sebagai layanan (IaaS), platform sebagai layanan (PaaS), dan perangkat lunak sebagai layanan (SaaS). Setiap penyedia berisi semua kode yang dibutuhkan Terraform untuk terhubung ke layanan, mengautentikasi, dan menyediakan sumber daya.
Meskipun pengembang dapat menulis penyedia mereka sendiri, mereka juga dapat menggunakan penyedia yang sudah ada yang ditulis oleh HashiCorp dan pengguna Terraform lainnya. Ada penyedia bawaan untuk sebagian besar layanan cloud privat dan cloud publik utama, serta untuk database, solusi jaringan, dan alat umum lainnya. Â
Registry Terraform adalah repositori untuk penyedia, modul, aturan kebijakan, dan solusi.
Siapa pun dapat memublikasikan dan menggunakan sumber daya di Terraform Registry publik. Organisasi juga dapat membuat registri pribadi untuk berbagi modul dan sumber daya mereka sendiri secara internal.
Terraform CLI adalah alat antarmuka baris perintah (CLI) untuk mengelola infrastruktur dengan Terraform. Pengembang menggunakannya untuk menjalankan perintah, membuat rencana eksekusi, menerapkan perubahan, dan berinteraksi dengan komponen-komponen utama Terraform seperti file konfigurasi, file status, penyedia, dan modul.
Organisasi menggunakan Terraform untuk menyediakan dan mengelola infrastruktur sepanjang siklus hidupnya. Contoh penggunaan umum meliputi:
Lingkungan multicloud bisa jadi rumit karena setiap penyedia cloud memiliki antarmuka, alat bantu, dan alur kerja masing-masing. Selain itu, sumber daya utama dapat didistribusikan di beberapa pusat data.
Organisasi dapat menggunakan Terraform untuk menyederhanakan manajemen dan orkestrasi infrastruktur multicloud berskala besar. Secara khusus, Terraform memungkinkan organisasi menggunakan bahasa konfigurasi yang sama untuk menyediakan dan mengelola sumber daya di beberapa penyedia layanan dalam satu alur kerja.
Terraform dapat menerapkan dan mengelola infrastruktur untuk aplikasi multitingkat, memungkinkan organisasi mengelola sumber daya untuk setiap tingkat dalam alur kerja terpadu sambil menghormati dependensi.
Misalnya, aplikasi multitingkat mungkin terdiri dari kumpulan server web, tingkat database, lapisan API, server caching, dan tingkat routing. Terraform akan menyediakan tingkat database sebelum menyediakan server web yang bergantung padanya.
Di organisasi besar, tim operasi IT terpusat biasanya menerima banyak permintaan infrastruktur yang berulang.
Organisasi dapat menggunakan Terraform untuk membangun model infrastruktur mandiri yang memberdayakan tim produk untuk mengelola infrastruktur mereka sendiri secara mandiri. Misalnya, dengan menggunakan modul yang telah dibuat sebelumnya, tim dapat langsung menerapkan komponen yang terstandarisasi dan disetujui.
Organisasi juga dapat mengintegrasikan Terraform dengan sistem tiket dan jalur integrasi berkelanjutan/pengiriman berkelanjutan (CI/CD) DevOps untuk membantu mengotomatiskan permintaan penyediaan infrastruktur baru. Misalnya, ketika pengguna mengirim permintaan infrastruktur ke sistem tiket, Terraform dapat memulai alur kerja untuk secara otomatis memperbarui sumber daya sesuai.Â
Terraform dapat membantu organisasi menegakkan kebijakan keamanan dan kepatuhan pada jenis sumber daya yang dapat disediakan dan digunakan oleh tim.
Sebagai contoh, organisasi bisa menggunakan modul Terraform untuk mengkodekan standar untuk menerapkan dan mengelola sumber daya di seluruh organisasi. Ketika tim lain menggunakan modul yang telah disetujui ini, mereka dapat memastikan bahwa mereka menggunakan sumber daya sesuai dengan praktik organisasi.
Organisasi dapat menyimpan file konfigurasi Terraform dalam sistem kontrol versi (VCS), yang memungkinkan tim DevOps untuk berkolaborasi pada kode, meninjau definisi, melacak perubahan infrastruktur, dan ulasan kembali ke versi infrastruktur sebelumnya jika perlu.
Kubernetes dan Terraform adalah komponen umum dari lingkungan cloud, dan keduanya membantu mengotomatiskan tugas-tugas terkait infrastruktur. Namun, perbedaan inti antara keduanya adalah bahwa Kubernetes berfokus pada beban kerja berkontainer, sementara Terraform mengelola semua jenis komponen infrastruktur, termasuk klaster Kubernetes itu sendiri.
Kubernetes adalah platform orkestrasi kontainer sumber terbuka untuk menjadwalkan dan mengotomatiskan penerapan, pengelolaan, dan penskalaan aplikasi dalam kontainer. Terraform adalah infrastruktur sebagai alat kode yang mengotomatiskan penyediaan dan pengelolaan infrastruktur.
Meskipun ini adalah alat yang berbeda dengan fungsi yang berbeda, mereka sering bekerja bersama di lingkungan cloud. Misalnya, Terraform dapat mengotomatiskan penyediaan klaster Kubernetes pada platform cloud, sementara Kubernetes mengelola penyebaran aplikasi dalam klaster ini.
Terraform dan Ansible keduanya adalah infrastruktur sebagai alat kode yang membantu mengotomatiskan tugas infrastruktur inti. Namun, mereka menggunakan bahasa yang berbeda dan sering melayani tujuan yang berbeda. Terraform digunakan untuk menyediakan sumber daya infrastruktur, sedangkan Ansible sering digunakan untuk mengelola konfigurasi sumber daya.
Terraform menggunakan bahasa deklaratif murni, sementara Ansible menggabungkan bahasa deklaratif dan prosedural. Dalam konfigurasi prosedural, pengembang menentukan langkah-langkah untuk mengonfigurasi sumber daya dalam keadaan yang diinginkan. Konfigurasi prosedural lebih padat karya, tetapi juga dapat memberikan lebih banyak kontrol.
Buku pedoman Ansible, yang ditulis dalam YAML, memungkinkan kontrol yang sangat baik atas tugas-tugas seperti menginstal perangkat lunak dan memperbarui pengaturan sistem. Ansible juga memiliki berbagai modul prebuilt untuk tugas-tugas manajemen konfigurasi umum, termasuk manajemen paket dan pembaruan sistem operasi. Dan Ansible dapat menerapkan perubahan pada sumber daya secara idemponen. Artinya, setelah operasi diterapkan pertama kali, aplikasi lebih lanjut dari operasi yang sama tidak mengubah sumber daya.
Secara bersama-sama, karakteristik ini membantu menjelaskan mengapa Ansible adalah pilihan umum untuk manajemen konfigurasi.
Meskipun Terraform dapat menyediakan sumber daya infrastruktur, itu tidak dapat mengelola perangkat lunak di dalam sumber daya seefektif Ansible. Sebagai contoh, Terraform dapat mendefinisikan mesin virtual baru, termasuk properti seperti jenis instance dan ukuran disk, tetapi tidak dapat memperbarui sistem operasi pada mesin virtual.
Namun, Terraform bisa bekerja sama dengan alat manajemen konfigurasi seperti Ansible untuk menyederhanakan dan merampingkan konfigurasi infrastruktur. Sebagai contoh, sebuah organisasi dapat menggunakan Terraform untuk menyediakan mesin virtual dan Ansible untuk mengonfigurasi perangkat lunak pada mesin tersebut.
Secara otomatis menskalakan infrastruktur TI Anda yang ada untuk kinerja yang lebih tinggi dengan biaya lebih rendah.
Temukan bagaimana AI untuk operasi TI memberikan insight yang Anda butuhkan untuk membantu mendorong kinerja bisnis yang luar biasa.
Bergerak melampaui otomatisasi tugas sederhana untuk menangani proses dengan profil tinggi, yang berhadapan langsung dengan pelanggan, dan menghasilkan pendapatan dengan adopsi dan skala bawaan.