Terraform cheatsheet - perintah dan contoh yang berguna
Daftar semua perintah terraform
Berikut adalah cheatsheet Terraform
yang berisi perintah penting, elemen konfigurasi, manajemen sumber daya, modul, variabel, penanganan state, dan praktik terbaik.
Terraform adalah alat open-source infrastructure-as-code (IaC) yang dikembangkan oleh
HashiCorp,
yang memungkinkan pengguna mendefinisikan dan menyediakan infrastruktur di berbagai penyedia cloud (misalnya, AWS, Azure, GCP) menggunakan file konfigurasi deklaratif.
Tujuan utamanya adalah mengotomatisasi penyediaan infrastruktur, memastikan konsistensi, dan mengurangi kesalahan manual.
Terraform mendukung multi-cloud, modular, dan state-driven workflow, menjadikannya fondasi utama dari praktik DevOps modern.
Manfaat Utama Terraform:
- Sintaks Deklaratif: Definisikan keadaan infrastruktur yang diinginkan dalam kode.
- Agnostik Provider: Bekerja dengan AWS, Azure, GCP, Kubernetes, dan lainnya.
- Manajemen State: Lacak perubahan infrastruktur untuk menghindari konflik.
Panduan Instalasi dan Pengaturan
https://developer.hashicorp.com/terraform/tutorials#get-started
Proses instalasi Terraform cukup sederhana.
-
Linux (Ubuntu/Debian):
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform
-
Windows (WSL):
wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip unzip terraform.zip
-
macOS (Homebrew):
brew install terraform
Verifikasi
terraform --version
Perintah CLI Terraform
Berikut adalah daftar semua perintah Terraform:
Perintah | Deskripsi |
---|---|
terraform init |
Inisialisasi direktori konfigurasi Terraform baru atau yang sudah ada |
terraform validate |
Periksa apakah konfigurasi valid |
terraform plan |
Tunjukkan rencana eksekusi tanpa membuat perubahan |
terraform apply |
Terapkan perubahan yang diperlukan untuk mencapai keadaan yang diinginkan |
terraform destroy |
Hancurkan infrastruktur yang dikelola oleh Terraform |
terraform fmt |
Format ulang file konfigurasi dalam gaya standar |
terraform show |
Tunjukkan state saat ini atau rencana |
terraform refresh |
Perbarui state dengan infrastruktur nyata |
terraform providers |
Tampilkan provider yang digunakan dalam konfigurasi |
terraform graph |
Visualisasikan ketergantungan sumber daya sebagai grafik |
terraform workspace list |
Daftar semua workspace yang tersedia |
terraform workspace new |
Buat workspace baru |
terraform workspace select |
Beralih ke workspace yang ditentukan |
terraform workspace show |
Tunjukkan nama workspace saat ini |
terraform workspace delete |
Hapus workspace yang ditentukan |
terraform output |
Tunjukkan nilai output dari file state |
terraform import |
Impor sumber daya yang sudah ada ke Terraform |
terraform taint |
Tandai sumber daya untuk direkreasi pada apply berikutnya |
terraform untaint |
Hapus tanda dari sumber daya yang ditandai |
terraform state list |
Daftar sumber daya dalam file state |
terraform state show |
Tunjukkan atribut dari satu sumber daya dalam state |
Esenstial Konfigurasi
Ekstensi File
.tf
: File konfigurasi utama (HCL sintaks).tfvars
: Nilai variabel
Tipe Blok Terraform
- Contoh Provider
provider "aws" { region = "us-east-1" }
- Contoh Resource
resource "aws_instance" "web" { ami = "ami-0abcdef" instance_type = "t2.micro" }
- Contoh Variabel
variable "instance_count" { type = number default = 2 }
- Contoh Output
output "instance_ip" { value = aws_instance.web.public_ip }
- Contoh Modul
module "vpc" { source = "./modules/vpc" cidr_block = var.vpc_cidr }
Bekerja dengan Variabel
- Mendeklarasikan variabel
variable "region" { description = "AWS region" default = "us-east-1" }
- Menetapkan nilai
- CLI:
terraform apply -var="region=us-west-2"
- tfvars file:
terraform apply -var-file="prod.tfvars"
- CLI:
- Tipe:
string
,number
,bool
,list
,map
,object
Mengelola State
- File state:
terraform.tfstate
- State jarak jauh (Contoh S3)
backend "s3" { bucket = "my-tf-state" key = "state.tfstate" region = "us-east-1" }
- Lihat state:
terraform show
terraform state list
Loop dan Kondisional
- Count
resource "aws_instance" "web" { count = 3 ... }
- For_each
resource "aws_s3_bucket" "b" { for_each = var.bucket_names bucket = each.value }
- Kondisional
instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
Fungsi
- Interpolasi string:
resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
- Contoh list, map:
locals { my_map = { a = 1, b = 2 } }
Provisioners
Digunakan untuk mem-bootstrapping sumber daya. Contoh:
resource "aws_instance" "web" {
...
provisioner "local-exec" {
command = "echo Instance created"
}
}
Praktik Terbaik
- Kontrol versi semua file
.tf
- Kunci versi provider untuk memastikan penyetelan yang konsisten
- Backend jarak jauh untuk manajemen state (S3, Azure Blob, dll.)
- Enkripsi file state di backend jarak jauh
- Modularisasi infrastruktur menggunakan modul yang dapat digunakan kembali
- Dokumentasi konfigurasi Anda
- Uji di lingkungan staging sebelum produksi
Referensi Tambahan
- Bantuan:
terraform --help
atau[command] --help
untuk bantuan spesifik perintah - Debugging: Atur
TF_LOG=INFO
atauTF_LOG=DEBUG
untuk log yang rinci - Format:
terraform fmt
Cheatsheet ini memberikan referensi akses cepat untuk aspek-aspek paling umum dan lanjutan dari penggunaan Terraform - dari perintah hingga praktik terbaik - membuatnya praktis bagi pengguna pemula maupun lanjutan. Semoga hari Anda menyenangkan!
Tautan yang Berguna
- https://developer.hashicorp.com/terraform
- Docker Cheatsheet
- Docker Compose Cheatsheet - Perintah paling berguna dengan contoh
- Kubernetes Cheatsheet
- Deploy Flutter project dengan backend ke AWS Amplify
- Deploy situs web yang dihasilkan Hugo ke AWS S3
- Kinerja AWS Lambda: JavaScript vs Python vs Golang
- Lambda Bertingkat dengan AWS SAM dan Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio sebagai alternatif Aws S3. Minio overview dan install