Menggunakan Perulangan dengan `for_each` dan `count`
Pelajari cara menyediakan beberapa instans resource atau modul menggunakan `count` dan `for_each` untuk menangani koleksi dan peta secara efisien.
Menggunakan Perulangan dengan `for_each` dan `count` adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 1 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.
Pengantar Perulangan
Saat mengelola infrastruktur dengan Terraform, Anda sering perlu membuat beberapa sumber daya yang serupa. Bayangkan jika Anda perlu membuat 10 server web atau 5 instans basis data. Menulis blok kode yang sama berulang kali akan merepotkan dan rentan terhadap kesalahan!
Pelajaran ini memperkenalkan dua fitur Terraform yang andal: count dan for_each. Keduanya membantu Anda menyediakan banyak sumber daya secara efisien, dengan konfigurasi yang tetap rapi dan mudah diskalakan.
Mengapa Menggunakan `count` dan `for_each`?
Menggunakan perulangan seperti count dan for_each memberikan berbagai manfaat penting:
- Mengurangi Duplikasi: Tulis kode infrastruktur sekali dan gunakan kembali.
- Meningkatkan Keterbacaan: Konfigurasi Anda menjadi jauh lebih rapi dan mudah dipahami.
- Skalabilitas: Sesuaikan jumlah sumber daya dengan mudah hanya dengan mengubah satu nilai atau koleksi.
- Konsistensi: Pastikan semua sumber daya serupa dikonfigurasi secara identik.
`count` untuk Pengulangan Sederhana
Argumen meta count sangat cocok saat Anda perlu membuat beberapa instans sumber daya atau modul yang hampir identik. Anda memberikan nilai bilangan bulat, lalu Terraform membuat instans sebanyak nilai tersebut.
Setiap instans yang dibuat oleh count akan memiliki indeks, dimulai dari 0 hingga count - 1. Anda dapat mengakses indeks ini menggunakan count.index.
Contoh: Beberapa Instans EC2 dengan `count`
Mari menyediakan tiga instans AWS EC2 yang identik. Perhatikan bagaimana count.index digunakan untuk memberikan nama unik kepada setiap server.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "web_server" {
count = 3
ami = "ami-053b0dcd10dcf2f56" # Ubuntu Server 20.04 LTS
instance_type = "t2.micro"
tags = {
Name = "WebServer-${count.index}"
}
}Memahami `count.index`
Pada contoh sebelumnya, ${count.index} secara otomatis bernilai 0, 1, dan 2 untuk setiap instans. Dengan demikian, Anda dapat membuat pengenal unik atau menyesuaikan properti setiap instans.
Tanpa count.index, ketiga server akan memiliki label “Name” yang sama persis, sehingga dapat menimbulkan kebingungan atau masalah di AWS.
Memperkenalkan `for_each`
Jika count cocok untuk pengulangan sederhana, for_each menawarkan fleksibilitas yang lebih besar. Fitur ini melakukan iterasi pada set string atau peta string, dengan membuat satu instans untuk setiap elemen.
for_each ideal saat Anda perlu mengelola sumber daya dengan konfigurasi yang berbeda atau saat jumlah sumber daya ditentukan oleh koleksi nonnumerik (misalnya, daftar nama lingkungan atau peta pengaturan pengguna).
Contoh: `for_each` dengan Set
Di sini, kita membuat tiga bucket S3, yang masing-masing diberi nama berdasarkan elemen dalam set for_each. Kita menggunakan each.value untuk mengakses item saat ini dalam iterasi.
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "app_buckets" {
for_each = toset(["prod-app-data", "dev-app-logs", "test-app-assets"])
bucket = each.value
acl = "private"
tags = {
Environment = split("-", each.value)[0]
}
}Contoh: `for_each` dengan Peta
Menggunakan peta memungkinkan Anda menentukan konfigurasi yang lebih kompleks dan unik untuk setiap sumber daya. Di sini, kita membuat bucket S3 dengan pengaturan pembuatan versi yang berbeda berdasarkan kunci lingkungan.
Anda dapat mengakses kuncinya dengan each.key dan nilainya dengan each.value.
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "configured_bucket" {
for_each = {
production = { name = "prod-data-bucket", versioning = true }
development = { name = "dev-logs-bucket", versioning = false }
}
bucket = each.value.name
acl = "private"
versioning {
enabled = each.value.versioning
}
tags = {
Environment = each.key
}
}`count` vs. `for_each`: Memilih dengan Bijak
Kapan sebaiknya masing-masing digunakan?
- Gunakan
count: Untuk iterasi numerik sederhana, yaitu membuat sumber daya identik ketika jumlah menjadi perhatian utama. Fitur ini sesuai jika Anda hanya memerlukan indeks untuk membedakan sumber daya. - Gunakan
for_each: Untuk melakukan iterasi pada koleksi kompleks (set atau peta), ketika sumber daya memerlukan pengenal unik atau properti yang berasal dari elemen koleksi. Fitur ini umumnya lebih disarankan jika setiap instans memiliki pengenal logis yang jelas dan unik.
Pemeriksaan Singkat: Perulangan
Pertimbangkan skenario ketika Anda perlu membuat satu bucket S3 untuk setiap tim di organisasi Anda, dan setiap bucket memerlukan kebijakan retensi khusus yang ditentukan oleh tim tersebut.
Rangkuman: Pembuatan Sumber Daya yang Efisien
Bagus! Anda telah mempelajari cara memanfaatkan count dan for_each untuk membuat konfigurasi Terraform yang lebih dinamis dan efisien.
countdigunakan untuk pengulangan numerik sederhana pada sumber daya identik, dengancount.indexsebagai pembeda.for_eachdigunakan untuk melakukan iterasi pada set atau peta, serta membuat sumber daya berbeda dengan properti unik menggunakaneach.keydaneach.value.
Konstruksi ini merupakan dasar penting untuk mengelola infrastruktur sebagai kode yang dapat diskalakan dan dipelihara!
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menggunakan Perulangan dengan `for_each` dan `count`” gratis?
Ya — teks lengkap “Menggunakan Perulangan dengan `for_each` dan `count`” 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 “Menggunakan Perulangan dengan `for_each` dan `count`”?
Pelajari cara menyediakan beberapa instans resource atau modul menggunakan `count` dan `for_each` untuk menangani koleksi dan peta secara efisien. 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 1 dari 4.
Berapa lama pelajaran “Menggunakan Perulangan dengan `for_each` dan `count`” 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
- Menggunakan Perulangan dengan `for_each` dan `count`
- Fungsi Bawaan Terraform
- Ekspresi Kondisional dan Splat
- Blok Dinamis untuk Konfigurasi Bertingkat