0Pricing
DevOps Bootcamp · Pelajaran

Blok Dinamis untuk Konfigurasi Bertingkat

Hasilkan blok konfigurasi bertingkat yang berulang secara terprogram menggunakan blok dinamis, sehingga Anda tidak perlu menyalin-tempel aturan grup keamanan dan sejenisnya.

Blok Dinamis untuk Konfigurasi Bertingkat adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 4 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.

Masalah Pengulangan

Beberapa sumber daya berisi blok bertingkat yang berulang, seperti beberapa aturan ingress dalam grup keamanan. Menulisnya satu per satu membutuhkan banyak teks dan sulit dijaga tetap DRY. Blok dinamis membuatnya dari suatu koleksi.

Blok Statis Terlebih Dahulu

Berikut versi manualnya: tiga blok ingress yang hampir identik. Bayangkan jika Anda harus memelihara selusin blok seperti ini.

resource "aws_security_group" "web" {
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

Anatomi Blok Dinamis

Blok dynamic memiliki label yang sesuai dengan nama blok bertingkat, koleksi for_each, dan blok content yang menjelaskan setiap instans yang dihasilkan.

dynamic "ingress" {
  for_each = var.rules
  content {
    from_port   = ingress.value.port
    to_port     = ingress.value.port
    protocol    = "tcp"
    cidr_blocks = ingress.value.cidrs
  }
}

Objek Iterator

Di dalam content, rujuk elemen saat ini melalui objek yang dinamai berdasarkan label blok. Objek tersebut menyediakan .value (elemen) dan .key (kunci peta atau indeks daftar).

Menentukan Variabel Input

Gerakkan blok dinamis dengan variabel bertipe. Daftar objek membuat setiap aturan dapat mendokumentasikan dirinya sendiri.

variable "rules" {
  type = list(object({
    port  = number
    cidrs = list(string)
  }))
}

Menyatukan Semuanya

Sekarang sumber daya tetap ringkas, berapa pun jumlah aturan yang Anda berikan.

resource "aws_security_group" "web" {
  name = "web-sg"
  dynamic "ingress" {
    for_each = var.rules
    content {
      from_port   = ingress.value.port
      to_port     = ingress.value.port
      protocol    = "tcp"
      cidr_blocks = ingress.value.cidrs
    }
  }
}

Mengganti Nama Iterator

Argumen iterator memungkinkan Anda mengganti nama variabel iterasi, yang berguna saat menumpuk blok dinamis agar tidak membingungkan.

dynamic "ingress" {
  for_each = var.rules
  iterator = rule
  content {
    from_port = rule.value.port
    to_port   = rule.value.port
  }
}

Melewati Blok Secara Kondisional

Berikan koleksi kosong untuk menghasilkan nol blok. Ekspresi ternary pada for_each membuat sebuah blok menjadi opsional.

dynamic "logging" {
  for_each = var.enable_logging ? [1] : []
  content {
    target_bucket = var.log_bucket
  }
}

Blok Dinamis Bertingkat

Blok dinamis dapat ditumpuk. Gunakan iterator yang berbeda agar blok bagian dalam dapat merujuk kedua tingkat tanpa ambiguitas.

dynamic "setting" {
  for_each = var.settings
  iterator = s
  content {
    namespace = s.value.namespace
    name      = s.value.name
    value     = s.value.value
  }
}

Kapan Tidak Menggunakan Blok Dinamis

Blok dinamis menambahkan lapisan tidak langsung dan dapat mengurangi keterbacaan. Jika Anda hanya memiliki satu atau dua blok statis, tuliskan secara langsung. Gunakan blok dinamis saat jumlahnya ditentukan oleh data.

Memeriksa Hasil

Jalankan plan untuk memastikan blok yang dihasilkan sesuai harapan. Terraform memperluas setiap elemen koleksi menjadi blok bertingkat yang konkret.

terraform plan

Pemeriksaan Singkat

Uji pengetahuan Anda tentang blok dinamis.

Ringkasan: Konfigurasi Bertingkat DRY

Blok dinamis memungkinkan Anda membuat konfigurasi bertingkat dari data:

  • for_each menggerakkan iterasi; content menentukan setiap blok.
  • Iterator menyediakan .value dan .key.
  • Koleksi kosong membuat blok menjadi opsional.
  • Gunakan seperlunya agar konfigurasi tetap mudah dibaca.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Blok Dinamis untuk Konfigurasi Bertingkat” gratis?

Ya — teks lengkap “Blok Dinamis untuk Konfigurasi Bertingkat” 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 “Blok Dinamis untuk Konfigurasi Bertingkat”?

Hasilkan blok konfigurasi bertingkat yang berulang secara terprogram menggunakan blok dinamis, sehingga Anda tidak perlu menyalin-tempel aturan grup keamanan dan sejenisnya. 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 4 dari 4.

Berapa lama pelajaran “Blok Dinamis untuk Konfigurasi Bertingkat” 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