Traffine I/O

Bahasa Indonesia

2023-03-19

Konvensi Penamaan di Terraform

Konvensi Penamaan di Terraform

Keterbacaan, pemahaman, dan kemudahan pemeliharaan kode sangat bergantung pada penerapan yang tepat dari konvensi penamaan. Artikel ini membahas berbagai konvensi penamaan untuk Terraform.

Konvensi Umum

Penggunaan Garis Bawah

Salah satu praktik umum dalam memberi nama elemen-elemen di Terraform adalah penggunaan garis bawah (_) sebagai pengganti tanda hubung (-). Garis bawah harus digunakan secara universal, mencakup nama resource, nama sumber data, nama variabel, output, dll. Pendekatan ini mendorong keseragaman dalam kode dan menghindari kebingungan potensial yang mungkin timbul akibat penggunaan yang tidak konsisten antara garis bawah dan tanda hubung.

Pertimbangan Kasus dan Karakter

Dalam hal penggunaan kasus, huruf kecil umumnya lebih disukai. Meskipun Terraform mendukung karakter UTF-8, penggunaan huruf kecil dan angka menawarkan format yang lebih sederhana dan mudah dibaca, sehingga membuat kode lebih mudah diakses oleh pengembang dengan berbagai tingkat keterampilan.

Argumen Resource dan Sumber Data

Penamaan Resource

Salah satu aturan penting yang harus diikuti adalah menghindari pengulangan tipe resource dalam nama resource. Tidak dianjurkan pengulangan sebagian maupun pengulangan lengkap. Misalnya, untuk tipe resource aws_route_table, nama tidak boleh mengulang route_table.

# good
`resource "aws_route_table" "public" {}`

# bad
`resource "aws_route_table" "public_route_table" {}`

# bad
`resource "aws_route_table" "public_aws_route_table" {}`

Nama Resource 'this' atau 'main'

Jika tidak ada nama yang lebih deskriptif dan umum tersedia, atau jika modul resource hanya membuat satu resource tunggal dari jenis tertentu, maka nama resource harus menjadi this atau main.

resource "aws_security_group" "this" {
  # ... other arguments omitted
}

Penggunaan Tanda Hubung

Tanda hubung harus digunakan di dalam nilai argumen dan di tempat di mana nilainya akan terlihat oleh manusia. Misalnya, di dalam nama DNS dari sebuah instans RDS.

resource "aws_db_instance" "this" {
  identifier = "my-rds-instance"
  # ... other arguments omitted
}

Penempatan Argumen 'count' dan 'for_each'

Argumen count atau for_each harus dimasukkan ke dalam blok resource atau sumber data sebagai argumen pertama di bagian atas dan dipisahkan dengan baris baru setelahnya.

# good
resource "aws_route_table" "public" {
  count = 2

  vpc_id = "vpc-12345678"
  # ... remaining arguments omitted
}

# bad
resource "aws_route_table" "public" {
  vpc_id = "vpc-12345678"
  count  = 2

  # ... remaining arguments omitted
}

Penempatan Argumen 'tags', 'depends_on', dan 'lifecycle'

Argumen tags, jika didukung oleh resource, harus dimasukkan sebagai argumen nyata terakhir, diikuti oleh depends_on dan lifecycle jika diperlukan. Setiap argumen ini harus dipisahkan oleh satu baris kosong.

# good
resource "aws_nat_gateway" "this" {
  count = 2

  allocation_id = "..."
  subnet_id     = "..."

  tags = {
    Name = "..."
  }

  depends_on = [aws_internet_gateway.this]

  lifecycle {
    create_before_destroy = true
  }
}

# bad
resource "aws_nat_gateway" "this" {
  count = 2

  tags = "..."

  depends_on = [aws_internet_gateway.this]

  lifecycle {
    create_before_destroy = true
  }

  allocation_id = "..."
  subnet_id     = "..."
}

Referensi

https://www.terraform-best-practices.com/naming

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!