HCL Syntax Terraform: Panduan Struktur & Contoh Kode

HCL (HashiCorp Configuration Language) adalah bahasa konfigurasi yang dirancang khusus untuk digunakan dengan alat-alat HashiCorp, terutama Terraform. Sintaks HCL dibuat agar mudah dibaca dan ditulis oleh manusia sekaligus mudah diurai oleh mesin. Secara struktural, dokumen HCL terdiri dari blok, argumen, dan ekspresi yang mendefinisikan infrastruktur sebagai kode (IaC).

Setiap berkas konfigurasi Terraform berakhiran dengan ekstensi .tf. Dalam ekosistem Terraform, HCL menjembatani kebutuhan antara ekspresi deklaratif untuk mendeklarasikan status akhir infrastruktur dan fleksibilitas pemrograman melalui fungsi serta variabel bawaan.

Komponen Utama Sintaks HCL

Pemahaman dasar mengenai struktur HCL bertumpu pada beberapa elemen sintaksis utama yang selalu berulang dalam setiap modul Terraform:

Elemen HCL Deskripsi & Fungsi Contoh Penggunaan
Blok (Block) Kontainer untuk konten tingkat tinggi yang mendefinisikan objek seperti resource, provider, atau module. resource "aws_vpc" "main" { ... }
Argumen (Argument) Menetapkan nilai untuk nama tertentu di dalam sebuah blok. Menggunakan tanda sama dengan (=). cidr_block = "10.0.0.0/16"
Ekspresi (Expression) Menghasilkan nilai, baik berupa literal (string, angka), referensi ke objek lain, maupun hasil fungsi. var.environment atau length(var.names)
Atribut (Attribute) Referensi nilai yang diekspor oleh suatu resource yang dapat digunakan oleh resource lain. aws_vpc.main.id

Contoh Kode Konfigurasi Terraform HCL

Berikut adalah contoh nyata penulisan skrip HCL dalam Terraform untuk mendeklarasikan penyedia layanan (provider), mendefinisikan variabel, dan membuat sumber daya jaringan Virtual Private Cloud (VPC) AWS:

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-southeast-1"
}

variable "environment" {
  type    = string
  default = "production"
}

resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true

  tags = {
    Name        = "vpc-${var.environment}"
    Environment = var.environment
  }
}

output "vpc_id" {
  value       = aws_vpc.main.id
  description = "ID dari VPC yang baru dibuat"
}

Aturan Penulisan dan Format HCL

Dalam menyusun kode Terraform menggunakan HCL, beberapa aturan standar wajib diikuti untuk menghindari error saat proses validasi dan eksekusi:

  • Komentar: Menggunakan tanda pagar (#) untuk satu baris, atau garis miring ganda (//). Komentar blok menggunakan /* ... */.
  • Penyandian Karakter: Seluruh berkas HCL wajib menggunakan penyandian UTF-8.
  • Pemberian Nama (Identifier): Nama resource, variabel, dan output harus menggunakan huruf kecil, angka, dan garis bawah (snake_case).
  • Pemformatan Otomatis: Selalu gunakan perintah terraform fmt untuk merapikan indentasi dan spasi secara otomatis sesuai standar HashiCorp.

Tips Troubleshooting Sintaks HCL

Kesalahan penulisan sintaks sering kali terjadi karena ketidakcocokan tipe data atau tanda kurung kurawal yang kurang. Jalankan perintah terraform validate sebelum melakukan terraform plan untuk memeriksa validitas sintaks tanpa harus berinteraksi dengan API penyedia cloud.