Berita teknologi terbaru, didukung oleh insight dari pakar
Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.
Terraform adalah produk infrastructure as code (IaC) kelas enterprise yang dibuat oleh HashiCorp. Terraform menyediakan antarmuka infrastructure lifecycle management terpadu dan alur kerja tunggal untuk menyediakan komponen infrastruktur untuk beberapa cloud (AWS, Azure dan Google Cloud), jaringan, pusat data pribadi, dan lingkungan SaaS.
Dengan Terraform, pengguna dapat membuat, memperbarui , dan menghancurkan komponen infrastruktur dengan menulis file konfigurasi yang dapat dibaca manusia. File konfigurasi ini menggunakan bahasa deklaratif daripada bahasa prosedural. Pengguna menjelaskan status akhir yang diinginkan untuk sumber daya infrastruktur, dan Terraform menangani sisanya. Ini 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 S3 buckets, serta 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.
Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.
Terraform dapat bekerja dengan hampir semua platform atau layanan yang menyediakan antarmuka pemrograman aplikasi (API), 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 tersebut bersifat deklaratif. Pengembang menjelaskan infrastruktur yang mereka inginkan tetapi tidak bagaimana menyediakannya.
Misalnya, katakanlah seorang 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 keadaan yang diinginkan dari keadaan 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 ulasan, memodifikasi , dan memvalidasi 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, katakanlah pengembang memperbarui properti VPC dan mengubah jumlah mesin virtual di VPC itu. Terraform 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. Perbandingan ini memungkinkan Terraform untuk menentukan perubahan yang perlu dilakukan untuk membawa infrastruktur saat ini sesuai dengan konfigurasi yang diinginkan.
Penyedia Terraform adalah plug-in yang digunakan oleh Terraform untuk 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 basis data, solusi jaringan, dan alat umum lainnya.
Terraform juga dapat mengelola infrastruktur yang ada. Dengan menggunakan blok impor, pengembang dapat membawa sumber daya yang dibuat di luar Terraform di bawah manajemennya, memungkinkan mereka untuk mengkodifikasi dan mengontrol seluruh lingkungan mereka, bukan hanya sumber daya baru.
Terraform Registry adalah repositori untuk penyedia, modul, aturan kebijakan, dan solusi.
Siapa pun dapat mempublikasikan dan menggunakan Sumber daya dan templat di Terraform Registry publik. Untuk menggunakan penyedia atau modul dari registri ini, pengguna menambahkannya ke konfigurasi mereka. Ketika mereka menjalankan terraform init, Terraform secara otomatis mengunduh semua yang dibutuhkannya.
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:
Hybrid dan multicloud bisa jadi rumit karena setiap penyedia cloud memiliki antarmuka, alat bantu, dan alur kerja masing-masing. Dalam pengaturan semacam ini, sumber daya penting dapat didistribusikan di cloud publik, cloud pribadi, dan beberapa pusat data.
Organisasi dapat menggunakan Terraform untuk menyederhanakan manajemen dan orkestrasi infrastruktur cloud skala besar yang kompleks. Secara spesifik, Terraform memungkinkan organisasi untuk menggunakan bahasa konfigurasi yang sama untuk menyediakan dan mengelola Sumber daya di seluruh cloud publik, Cloud Private , dan on premises dalam satu alur kerja terpadu.
Untuk membantu mengelola infrastruktur dalam skala besar, Terraform Stacks membantu pengguna mengotomatiskan dan mengoptimalkan koordinasi, penerapan, dan manajemen siklus hidup konfigurasi Terraform yang saling bergantung, mengurangi waktu dan overhead pengelolaan infrastruktur.
Tumpukan menggantikan struktur modul root tradisional Terraform dengan arsitektur berbasis komponen baru yang dibangun di atas modul Terraform. Dengan menggunakan Stacks, pengguna dapat menyediakan dan mengoordinasikan siklus hidup infrastruktur dalam skala besar, menawarkan pendekatan yang terorganisasi dan dapat digunakan kembali yang memperluas konsep infrastruktur sebagai kode.
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 atas kumpulan server web, tingkat basis data , lapisan API, server caching, dan tingkat routing. Terraform akan menyediakan tingkat basis data sebelum menyediakan server web yang bergantung padanya.
Layanan mandiri pengembang berkembang melampaui penyediaan infrastruktur sederhana untuk mencakup seluruh siklus hidup aplikasi, mulai dari penyiapan lingkungan hingga penerapan dan operasi berkelanjutan.
Terraform memberikan dasar untuk model layanan mandiri modern ini. Ini terintegrasi dengan portal pengembang seperti Backstage, Port dan Cortex; Sistem ITSM seperti ServiceNow dan Jira; dan platform pipeline CI/CD seperti GitHub Actions dan Jenkins.
Untuk tim yang lebih suka tetap berada dalam alur kerja Terraform, Waypoint berfungsi sebagai portal layanan mandiri pengembang asli Terraform, memungkinkan pengalaman penerapan aplikasi yang konsisten dan berbasis kebijakan.
Di AWS, Azure, dan GCP, Terraform bertindak sebagai lapisan integrasi dan kontrol yang menyatukan titik masuk ini, memberdayakan pengembang untuk bergerak lebih cepat sambil mempertahankan tata kelola dan konsistensi operasional.
Terraform dapat membantu organisasi menegakkan kebijakan keamanan dan kepatuhan pada jenis sumber daya yang dapat disediakan dan digunakan oleh tim.
Sentinel , kerangka kerja kebijakan sebagai kode HashiCorp untuk menegakkan tata kelola berbasis logika yang berbutir halus di seluruh infrastruktur, menyediakan perpustakaan kebijakan pra-tertulis yang menawarkan kontrol out-of-the-box (misalnya, pemetaan ke NIST SP-80053). Kebijakan-kebijakan ini membantu tim untuk menegakkan batasan kepatuhan umum tanpa harus membuat semua kebijakan dari awal.
Sebagai contoh, organisasi dapat menggunakan modul Terraform untuk mengodekan standar untuk menerapkan dan mengelola sumber daya di seluruh organisasi. Ketika tim lain menggunakan modul yang disetujui ini, mereka dapat memastikan bahwa mereka mengimplementasikan sumber daya sesuai dengan praktik organisasi.
Organisasi dapat menyimpan kode Terraform dan file konfigurasi dalam sistem kontrol versi (VCS), seperti repositori Git. Pengaturan ini memungkinkan tim DevOps untuk berkolaborasi pada kode, meninjau definisi, melacak perubahan infrastruktur, dan memutar kembali ke versi infrastruktur sebelumnya jika perlu.
Terraform dan Ansible sering digunakan bersama untuk memperluas otomatisasi di luar penyediaan infrastruktur. Terraform unggul dalam penyediaan infrastruktur, menyiapkan dan menyediakan sumber daya kompleks untuk lingkungan cloud dan hibrida. Ansible adalah alat yang ampuh untuk manajemen konfigurasi, memodifikasi dan memelihara infrastruktur yang ada secara konsisten.
Buku pedoman Ansible, yang ditulis dalam YAML, memungkinkan kontrol yang sangat baik atas tugas-tugas seperti menginstal perangkat lunak dan memperbarui pengaturan sistem.
Kedua alat ini menangani tahapan siklus hidup infrastruktur yang berbeda tetapi terhubung, menjadikannya cocok untuk organisasi yang mencari konsistensi di seluruh lingkungan.
Integrasi antara Terraform dan Ansible membantu menutup kesenjangan antara pembuatan sumber daya dan manajemen konfigurasi. Misalnya, tindakan Terraform dapat mengirimkan peristiwa yang mengaktifkan kemampuan otomatisasi berbasis peristiwa Ansible Automation Platform (AAP) untuk memicu alur kerja otomatisasi dinamis dari Ansible, semuanya hanya dengan satu penerapan Terraform.
Konektivitas ini dapat membantu menyatukan perangkat infrastruktur dan mengurangi hambatan di seluruh operasi Hari ke-2 seperti penambalan, penskalaan, dan penghentian layanan. Bersama-sama, Terraform dan Ansible membantu memastikan bahwa infrastruktur dan aplikasi tetap konsisten dan dapat diandalkan di setiap tahap siklus hidupnya.
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 merupakan platform orkestrasi sumber terbuka untuk kontainer yang memungkinkan penjadwalan serta otomatisasi penerapan, pengelolaan, dan penskalaan aplikasi yang dikemas dalam kontainer. Terraform adalah infrastruktur sebagai alat kode yang mengotomatiskan penyediaan dan pengelolaan infrastruktur.
Meskipun alat-alat ini berbeda dan memiliki fungsi yang berbeda, mereka sering bekerja bersama di backend cloud. Misalnya, Terraform dapat mengotomatiskan penyediaan klaster Kubernetes pada platform cloud, sementara Kubernetes mengelola penerapan aplikasi dalam klaster ini.