Terraform cheatsheet - perintah dan contoh yang berguna

Daftar semua perintah terraform

Konten Halaman

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.

mahasiswa menggunakan terraform

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"
  • 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 atau TF_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