0Pricing
DevOps Bootcamp · Pelajaran

Ekspresi Kondisional dan Splat

Terapkan logika kondisional dalam konfigurasi menggunakan operator ternary, serta pahami ekspresi splat untuk mengubah daftar objek.

Ekspresi Kondisional dan Splat adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Logika Dinamis di Terraform

Terraform bukan hanya tentang deklarasi statis! Untuk membuat konfigurasi infrastruktur Anda lebih cerdas dan mudah disesuaikan, kita menggunakan logika dinamis.

Pelajaran ini memperkenalkan dua alat yang canggih: ekspresi kondisional dan ekspresi splat. Keduanya membantu infrastruktur Anda beradaptasi dengan berbagai situasi dan mentransformasi data secara efisien.

Ekspresi Kondisional: Dasar-Dasar

Ekspresi kondisional, yang sering disebut operator ternary, memungkinkan Anda memilih salah satu dari dua nilai berdasarkan apakah suatu kondisi bernilai benar atau salah. Ekspresi ini seperti pernyataan 'if-else' sederhana untuk nilai.

  • Sintaks: condition ? value_if_true : value_if_false
  • Ekspresi ini sangat berguna untuk membuat konfigurasi yang fleksibel dan dapat digunakan kembali, serta beradaptasi dengan berbagai lingkungan atau pengaturan.

Kondisional: Contoh Nilai Sederhana

Mari lihat cara ekspresi kondisional menetapkan nilai variabel lokal secara dinamis berdasarkan variabel input. Coba ubah default = "dev" menjadi default = "prod", lalu jalankan kembali.

variable "env" {
  description = "Deployment environment (dev or prod)"
  type        = string
  default     = "dev"
}

locals {
  instance_type = var.env == "prod" ? "t3.medium" : "t3.micro"
}

output "chosen_instance_type" {
  value = local.instance_type
  description = "The instance type selected based on environment."
}

Kondisional: Contoh Atribut Sumber Daya

Anda juga dapat menggunakan kondisional untuk mengontrol atribut sumber daya, bahkan menentukan apakah suatu sumber daya dibuat atau tidak! Di sini, kita membuat bucket S3 secara kondisional menggunakan meta-argumen count.

variable "create_bucket" {
  description = "Whether to create an S3 bucket"
  type        = bool
  default     = true
}

resource "aws_s3_bucket" "my_bucket" {
  # If create_bucket is true, count is 1 (create one bucket).
  # If create_bucket is false, count is 0 (create no buckets).
  count  = var.create_bucket ? 1 : 0
  bucket = "coddykit-unique-bucket-12345" # IMPORTANT: Replace with a globally unique name!
  acl    = "private"
}

output "bucket_id" {
  value = var.create_bucket ? aws_s3_bucket.my_bucket[0].id : "No bucket created"
  description = "The ID of the created S3 bucket, or a message if not created."
}

Memahami Ekspresi Splat

Ekspresi splat ([*]) digunakan untuk mengubah daftar objek menjadi daftar atribut tertentu dari objek-objek tersebut. Ini adalah pintasan yang canggih untuk mengekstrak data dari beberapa item sekaligus.

  • Sintaks: LIST_OF_OBJECTS[*].ATTRIBUTE
  • Ekspresi ini menyederhanakan penggunaan koleksi, seperti beberapa sumber daya yang dibuat dengan count atau variabel daftar yang kompleks.

Splat: Contoh Keluaran Sumber Daya

Bayangkan Anda membuat beberapa instans EC2. Bagaimana cara mendapatkan daftar semua IP publiknya dengan mudah? Ekspresi splat sangat cocok untuk ini! Catatan: Anda memerlukan AMI yang valid untuk wilayah AWS Anda.

resource "aws_instance" "web" {
  count         = 2 # Creates two instances
  ami           = "ami-0abcdef1234567890" # Replace with a valid AMI ID for your region
  instance_type = "t2.micro"
  tags = {
    Name = "web-instance-${count.index}"
  }
}

output "web_instance_public_ips" {
  value = aws_instance.web[*].public_ip
  description = "A list of public IP addresses for all web instances."
}

Splat: Contoh Daftar Variabel

Ekspresi splat bukan hanya untuk sumber daya; ekspresi ini juga sangat cocok digunakan dengan variabel yang kompleks. Di sini, kita memiliki daftar objek pengguna dan ingin mengekstrak hanya alamat email mereka.

variable "users" {
  description = "List of user objects, each with name, email, and role."
  type = list(object({
    name  = string
    email = string
    role  = string
  }))
  default = [
    { name = "Alice", email = "alice@example.com", role = "admin" },
    { name = "Bob", email = "bob@example.com", role = "viewer" },
    { name = "Charlie", email = "charlie@example.com", role = "editor" }
  ]
}

output "user_emails" {
  value = var.users[*].email
  description = "A list containing only the email addresses of the users."
}

Menggabungkan Kondisional dan Splat

Ekspresi kondisional dan splat dapat digabungkan untuk menghasilkan logika yang lebih canggih dan ringkas. Misalnya, Anda dapat memilih daftar sumber daya secara kondisional, lalu menggunakan ekspresi splat pada daftar yang dipilih.

  • Hal ini memungkinkan konfigurasi yang sangat adaptif dan dapat merespons skenario yang kompleks.
  • Contoh: (var.env == "prod" ? aws_instance.prod : aws_instance.dev)[*].id dapat mengambil ID dari kumpulan instans yang berbeda berdasarkan lingkungan.

Praktik Terbaik untuk Logika Dinamis

Meskipun canggih, logika dinamis terkadang dapat membuat konfigurasi lebih sulit dipahami jika tidak digunakan dengan hati-hati. Berikut beberapa kiat:

  • Jaga agar mudah dibaca: Uraikan ekspresi kompleks menjadi bagian-bagian yang lebih kecil dan lebih mudah dikelola.
  • Gunakan Lokal: Simpan ekspresi kondisional atau splat yang kompleks dalam blok locals untuk meningkatkan keterbacaan dan mencegah pengulangan.
  • Lakukan pengujian secara menyeluruh: Logika dinamis dapat menyebabkan perilaku yang tidak terduga. Selalu jalankan terraform plan dan tinjau dengan cermat perubahan yang diusulkan.
  • Dokumentasikan: Tambahkan komentar untuk menjelaskan logika yang kompleks, terutama saat menggabungkan kondisional dan splat.

Pemeriksaan Cepat

Perhatikan konfigurasi Terraform berikut:

variable "server_names" {
  type    = list(string)
  default = ["web-01", "db-01", "cache-01"]
}

output "filtered_names" {
  value = var.server_names[*]
}

Rangkuman dan Langkah Berikutnya

Bagus sekali! Anda telah mempelajari cara membuat konfigurasi Terraform yang jauh lebih dinamis dan fleksibel:

  • Kita mempelajari ekspresi kondisional (operator ternary) untuk membuat nilai menjadi dinamis berdasarkan kondisi tertentu.
  • Kita menguasai ekspresi splat ([*]) untuk mengekstrak daftar atribut dari koleksi objek atau sumber daya secara efisien.

Alat-alat ini merupakan dasar penting untuk membangun infrastruktur sebagai kode yang dapat diskalakan, digunakan kembali, dan beradaptasi. Teruslah berlatih agar dapat mengintegrasikannya ke dalam alur kerja Terraform sehari-hari Anda!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Ekspresi Kondisional dan Splat” gratis?

Ya — teks lengkap “Ekspresi Kondisional dan Splat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Ekspresi Kondisional dan Splat”?

Terapkan logika kondisional dalam konfigurasi menggunakan operator ternary, serta pahami ekspresi splat untuk mengubah daftar objek. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?

Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Ekspresi Kondisional dan Splat” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?

Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menggunakan Perulangan dengan `for_each` dan `count`
  2. Fungsi Bawaan Terraform
  3. Ekspresi Kondisional dan Splat
  4. Blok Dinamis untuk Konfigurasi Bertingkat
← Kembali ke DevOps Bootcamp