Kursus
Infrastructure as Code (IaC) adalah proses yang mengotomatiskan penyediaan dan pengelolaan infrastruktur melalui kode. Meskipun konfigurasi perangkat keras fisik dan alat konfigurasi interaktif dapat digunakan untuk menyediakan infrastruktur, IaC menawarkan beberapa keunggulan seperti kontrol versi, keterulangan, dan skalabilitas. Salah satu alat IaC teratas adalah Terraform, solusi yang dikembangkan oleh HashiCorp pada tahun 2014 dan digunakan oleh lebih dari 500.000 organisasi di seluruh dunia. Mari kita telusuri cara kerja Terraform dan cara menggunakannya untuk operasi TI modern.
Saat mulai mempelajari Terraform, perlu diketahui bahwa pemahaman terhadap setidaknya satu penyedia cloud utama (AWS, Azure, Google Cloud, dll.) merupakan prasyarat karena Terraform digunakan untuk mengelola infrastruktur cloud. Kursus Understanding Cloud Computing kami memberikan landasan yang kuat jika Anda baru dalam komputasi cloud.
Apa itu Terraform?
Terraform adalah alat open-source yang memungkinkan Anda mendefinisikan komponen infrastruktur dan hubungan di antaranya menggunakan bahasa konfigurasi tingkat tinggi.
Dalam file konfigurasi Terraform yang mudah dibaca manusia, Anda dapat menentukan keadaan yang diinginkan dari infrastruktur Anda dan Terraform akan secara otomatis menentukan cara mencapainya. File-file ini dapat diberi versi, dibagikan, dan digunakan kembali untuk menyediakan cara yang konsisten dalam mengelola infrastruktur Anda, mulai dari sumber daya komputasi dan penyimpanan, hingga DNS dan fitur SaaS.
Terraform dapat digunakan dengan berbagai penyedia cloud, dalam infrastruktur multi-cloud, dan lingkungan on-premises.
Fitur Utama Terraform
Mari kita lihat lebih dekat aspek-aspek mendasar yang membedakan Terraform:
HashiCorp Configuration Language
Terraform menggunakan bahasa tingkat tinggi bernama HashiCorp Configuration Language (HCL), yang dirancang khusus untuk mendefinisikan infrastruktur sebagai kode. Bahasa konfigurasi tingkat tinggi menerapkan sintaks deklaratif yang lebih abstrak dan ramah pengguna dibandingkan skrip tingkat rendah dan konfigurasi manual. Anda mungkin pernah menjumpai bahasa tingkat tinggi sebelumnya, misalnya pada file YAML atau JSON.
HCL mengikuti struktur blok, di mana setiap blok bertingkat mewakili sumber daya dan konfigurasinya. Sumber daya didefinisikan secara eksplisit dengan nama dan atribut.
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Rencana eksekusi
Setelah Anda mendefinisikan keadaan yang diinginkan dari infrastruktur, Terraform akan menghasilkan rencana eksekusi. Rencana ini akan mencantumkan langkah-langkah yang perlu dilakukan Terraform untuk mencapai keadaan tersebut, sehingga Anda dapat meninjau perubahan sebelum diterapkan. Memeriksa rencana sebelum menerapkan perubahan akan menghindari modifikasi yang tidak diinginkan, seperti penghapusan sumber daya.
Manajemen state
Terraform memelihara file state yang secara otomatis melacak keadaan saat ini dari infrastruktur Anda dan berfungsi sebagai sumber kebenaran saat menentukan perubahan apa yang perlu dilakukan. Secara default, file ini disimpan secara lokal dan bernama terraform.tfstate.
Provider
Provider adalah plugin yang berinteraksi dengan API platform cloud dan layanan lainnya serta memungkinkan Terraform mengelola berbagai macam sumber daya. Provider resmi dikembangkan dan dipelihara oleh HashiCorp dan mitra tepercayanya seperti AWS, Azure, Google Cloud, Github, Datadog, dll. Ada juga plugin yang dikembangkan komunitas, yang dapat ditemukan di Terraform Registry atau Github.
Graf sumber daya
Terraform membangun graf sumber daya yang memperlihatkan sumber daya infrastruktur Anda dan hubungan di antaranya. Graf ini memungkinkan Terraform menghasilkan rencana secara efektif, menangani dependensi antar sumber daya, dan memastikan sumber daya dibuat, diperbarui, dan dihapus dalam urutan yang benar. Graf ini juga merupakan cara yang bagus untuk memvisualisasikan infrastruktur Anda dan memahami dampak dari perubahan yang ingin Anda lakukan.

Contoh graf sumber daya. Sumber: Dokumentasi HashiCorp
Mulai Menggunakan Terraform
Mari jalani workflow Terraform pertama kita. Jika Anda baru dalam DevOps atau komputasi cloud secara umum, saya sarankan mengikuti kursus Understanding Cloud Computing dan Introduction to DevOps kami sebelum melangkah lebih jauh.
Instalasi dan penyiapan
Dalam tutorial Terraform ini, kita akan membuat sumber daya di AWS. Jika Anda ingin mengikuti dan belum memiliki akun, kunjungi AWS dan daftar.
- Unduh Terraform dari situs resmi. Pilih biner yang sesuai untuk sistem operasi Anda dan ikuti petunjuk instalasi.
- Setelah Anda menginstal Terraform, buka jendela Terminal baru dan jalankan terraform -version untuk memastikan perangkat lunak terpasang dengan benar.
- Instal AWS CLI
- Konfigurasikan AWS CLI dengan menjalankan aws configure di terminal Anda. Anda akan diminta memasukkan Access Key ID, Secret Access Key, nama region default, dan format output default Anda. Terraform seharusnya dapat mengaksesnya secara otomatis.
Konfigurasi Terraform pertama
Buat direktori baru dan file konfigurasi pertama Anda. Mari kita beri nama main.tf, dan beri tahu Terraform bahwa kita ingin membuat instance AWS EC2. Kodenya, ditulis dalam HCL, terlihat seperti ini:
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Inisialisasi proyek
Sekarang mari kita inisialisasi proyek Terraform kita dengan menjalankan perintah berikut:
$ terraform init
Ini adalah perintah satu kali dan akan mengunduh plugin provider yang diperlukan. Anda tidak perlu menjalankannya untuk perubahan selanjutnya.
Plan
Sekarang kita ingin menghasilkan rencana eksekusi. Ingat, rencana akan menyoroti perubahan yang perlu dilakukan Terraform untuk mencapai keadaan yang diinginkan (dalam hal ini, sebuah instance EC2 yang berjalan). Jalankan:
$ terraform plan
Anda akan melihat sesuatu seperti ini:
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-0c55b159cbfafe1f0"
+ instance_type = "t2.micro"
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
Apply
Kita telah meninjau rencananya dan sekarang memutuskan untuk mengeksekusinya serta menyediakan sumber daya. Di terminal Anda, jalankan:
$ terraform apply
Anda akan diminta mengonfirmasi tindakan. Ketik “yes” untuk melanjutkan.
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
Anda akan melihat hal berikut:
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed] aws_instance.example:
Creation complete after 15s [id=i-0abcdef1234567890]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Selamat, Anda telah menyediakan instance EC2 pertama di AWS menggunakan Terraform!
Manfaat Menggunakan Terraform
Sebelumnya kami menyebutkan bahwa menggunakan Terraform memberikan banyak manfaat, seperti konsistensi dan keterulangan, serta menurunkan tingkat kesalahan manusia berkat rencana eksekusi.
Manfaat lainnya meliputi:
- Penyediaan Cepat: Terraform dapat membuat dan memperbarui sumber daya secara paralel, yang sangat berguna untuk menyiapkan lingkungan pengembangan, pengujian, dan staging dengan cepat.
- Kolaborasi yang Meningkat: Dipadukan dengan sistem kontrol versi seperti Git, Terraform adalah cara yang sangat baik untuk meningkatkan kolaborasi dan transparansi atas infrastruktur Anda. Perubahan dapat ditinjau, disetujui, dan dilacak layaknya kode aplikasi.
- Disaster Recovery yang Efisien: Jika terjadi sesuatu, Terraform dapat dengan cepat membuat ulang seluruh infrastruktur dari awal menggunakan file konfigurasi yang sama.
- Dukungan Komunitas: Terraform mendorong penggunaan modul, yaitu konfigurasi yang dapat digunakan kembali yang bisa dibagikan dan mempromosikan praktik terbaik dalam mengelola infrastruktur. Terraform juga memiliki komunitas yang aktif dan ekosistem provider serta modul yang luas, sehingga kemungkinan besar Anda akan menemukan sesuatu untuk tumpukan teknologi Anda, betapapun niche-nya.
Kasus Penggunaan Umum untuk Terraform
Baik Anda seorang Data Engineer yang membangun pipeline atau Data Scientist yang ingin mendepoloy solusi Anda ke produksi, Terraform adalah alat yang hebat untuk mengelola kebutuhan infrastruktur Anda. Berikut beberapa kasus penggunaan paling umum:
Manajemen multi-cloud
Tidak selalu mudah mengelola infrastruktur yang mencakup beberapa penyedia cloud. Terraform memungkinkan Anda melakukan hal itu hanya dengan satu alat. Selain itu, Terraform dapat mengelola sumber daya on-premise, menjadikannya solusi ideal bagi organisasi yang beroperasi di lingkungan hybrid.
Workflow CI/CD
Terraform terintegrasi dengan baik dengan workflow CI/CD, yang berarti Anda dapat menerapkan infrastruktur sebagai bagian dari proses pengiriman perangkat lunak. Anda juga dapat secara otomatis membuat dan menghapus lingkungan pratinjau, dev, pengujian, atau staging sesuai kebutuhan.
Klaster Kubernetes
Terraform dapat mengelola klaster Kubernetes pada berbagai penyedia cloud seperti AWS (EKS), Azure (AKS), atau GCP (GKE). Ini mencakup penyiapan infrastruktur yang diperlukan, pengelolaan sumber daya Kubernetes dalam klaster, dan penskalaan klaster berdasarkan kebutuhan beban kerja.
Terraform vs. Alat IaC Lainnya
Alat IaC populer lainnya mencakup Ansible, Chef, Puppet, dan AWS CloudFormation. Setiap alat memiliki kelebihan dan kekurangannya. Perhatikan berikut ini:
| Fitur | Terraform | Ansible | Chef | Puppet | CloudFormation |
|---|---|---|---|---|---|
| Sumber Terbuka | Ya | Ya | Ya | Ya | Tidak |
| Sintaks Deklaratif | Ya | Tidak | Tidak | Ya | Ya |
| Dukungan Multi-Cloud | Ya | Ya | Ya | Ya | Tidak, hanya AWS |
| Manajemen State | Ya | Tidak | Tidak | Ya | Ya |
| Rencana Eksekusi | Ya | Tidak | Tidak | Tidak | Tidak |
| Manajemen Dependensi | Ya | Terbatas | Terbatas | Ya | Ya |
Seperti yang kita lihat, meskipun semua alat ini kuat dengan caranya masing-masing, Terraform menonjol karena set fiturnya yang komprehensif. Namun, daftar ini tidak lengkap, dan setiap alat melayani kasus penggunaan yang sedikit berbeda tergantung pada kebutuhan. Misalnya, Ansible dengan sifat proseduralnya sangat cocok untuk manajemen konfigurasi dan tugas ad-hoc.
Kesimpulan
Dalam 10 tahun terakhir, Terraform telah membantu ribuan organisasi mengelola infrastruktur TI mereka. Dengan pendekatan deklaratif, kemampuan otomasi, dan dukungan untuk lingkungan multi-cloud, Terraform telah menjadi salah satu alat IaC paling populer, dan tidak diragukan lagi akan tetap menjadi pemain utama di ruang manajemen infrastruktur seiring terus meningkatnya adopsi cloud.
Sekarang setelah Anda memahami dasar-dasar Terraform, Anda dapat mendalami konfigurasi yang lebih lanjut dan skenario nyata. Lihat tutorial HashiCorp Terraform untuk mempelajari cara menggunakan Terraform untuk tugas dan kasus penggunaan umum, atau baca posting blog kami 14 Alat Esensial Data Engineering untuk Digunakan di 2024 untuk memahami bagaimana Terraform cocok dalam perangkat Data Engineer.

Saya adalah tech lead berorientasi produk yang berspesialisasi dalam mengembangkan startup tahap awal dari prototipe pertama hingga mencapai product-market fit dan seterusnya. Saya sangat penasaran dengan cara orang menggunakan teknologi, dan saya senang bekerja erat dengan para founder serta tim lintas fungsi untuk mewujudkan ide-ide berani. Saat tidak membangun produk, saya mencari inspirasi di berbagai penjuru dunia atau melepas penat di studio yoga.
Frequently Asked Questions
Apakah Terraform cocok untuk proyek skala kecil atau terutama untuk penggunaan enterprise?
Terraform adalah alat yang bermanfaat, apa pun ukuran proyek Anda! Baik Anda memiliki 5 sumber daya untuk dikelola atau 1000, Anda pasti akan merasakan manfaatnya.
Berapa biaya Terraform?
Terraform bersifat open-source dan gratis digunakan, tetapi ingat bahwa penyedia cloud Anda akan menagih biaya atas sumber daya yang disediakan dan dikelola melalui Terraform.
Dapatkah Terraform mengelola database dan layanan stateful lainnya?
Ya, Terraform dapat mengelola database dan layanan stateful lainnya. Anda dapat mendefinisikan instance, klaster, dan konfigurasinya dalam file IaC Anda.
Bagaimana Terraform menangani secret dan informasi sensitif dalam file konfigurasi?
Terraform mendorong praktik terbaik untuk menangani secret dengan mendukung variabel lingkungan, variabel terenkripsi, dan integrasi dengan layanan manajemen secret seperti HashiCorp Vault atau AWS Secrets Manager.
