Ungkapan Bersyarat dan Splat
Laksanakan logik bersyarat dalam konfigurasi anda menggunakan operator ternari dan fahami ungkapan splat untuk mengubah senarai objek.
Ungkapan Bersyarat dan Splat ialah pelajaran Kem Intensif DevOps percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif DevOps, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.
Logik Dinamik dalam Terraform
Terraform bukan sekadar tentang pengisytiharan statik! Untuk menjadikan konfigurasi infrastruktur anda lebih pintar dan mudah disesuaikan, kita menggunakan logik dinamik.
Pelajaran ini memperkenalkan dua alat berkuasa: ungkapan bersyarat dan ungkapan splat. Alat-alat ini membantu infrastruktur anda menyesuaikan diri dengan situasi berbeza dan mentransformasikan data dengan cekap.
Ungkapan Bersyarat: Asas
Ungkapan bersyarat, yang sering dipanggil operator ternari, membolehkan anda memilih salah satu daripada dua nilai berdasarkan sama ada sesuatu syarat adalah benar atau palsu. Ia seperti pernyataan 'jika-maka' yang ringkas untuk nilai.
- Sintaks:
condition ? value_if_true : value_if_false - Ungkapan ini sangat berguna untuk menjadikan konfigurasi fleksibel dan boleh digunakan semula, serta menyesuaikannya dengan persekitaran atau tetapan yang berbeza.
Bersyarat: Contoh Nilai Ringkas
Mari lihat cara ungkapan bersyarat menetapkan nilai pemboleh ubah setempat secara dinamik berdasarkan pemboleh ubah masukan. Cuba tukar default = "dev" kepada default = "prod" dan jalankan semula.
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."
}Bersyarat: Contoh Atribut Sumber
Anda juga boleh menggunakan ungkapan bersyarat untuk mengawal atribut sumber, termasuk menentukan sama ada sesuatu sumber akan dicipta atau tidak! Di sini, kita mencipta baldi S3 secara bersyarat menggunakan argumen meta 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 Ungkapan Splat
Ungkapan splat ([*]) digunakan untuk menukar senarai objek kepada senarai atribut tertentu daripada objek tersebut. Ini ialah pintasan berkuasa untuk mengekstrak data daripada berbilang item sekali gus.
- Sintaks:
LIST_OF_OBJECTS[*].ATTRIBUTE - Ungkapan ini memudahkan penggunaan koleksi, seperti berbilang sumber yang dicipta dengan
countatau pemboleh ubah senarai yang kompleks.
Splat: Contoh Keluaran Sumber
Bayangkan anda mencipta berbilang tika EC2. Bagaimanakah anda mendapatkan senarai semua IP awamnya dengan mudah? Ungkapan splat sangat sesuai untuk tujuan ini! Nota: Anda memerlukan AMI yang sah untuk rantau 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 Senarai Pemboleh Ubah
Ungkapan splat bukan hanya untuk sumber; ungkapan ini juga berfungsi dengan baik untuk pemboleh ubah kompleks. Di sini, kita mempunyai senarai objek pengguna dan mahu mengekstrak alamat e-mel mereka sahaja.
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 Ungkapan Bersyarat dan Splat
Ungkapan bersyarat dan splat boleh digabungkan untuk menghasilkan logik yang lebih maju dan ringkas. Contohnya, anda boleh memilih senarai sumber secara bersyarat, kemudian menggunakan ungkapan splat pada senarai yang dipilih.
- Hal ini membolehkan konfigurasi yang sangat mudah disesuaikan dan dapat bertindak balas terhadap senario kompleks.
- Contoh:
(var.env == "prod" ? aws_instance.prod : aws_instance.dev)[*].idboleh mendapatkan ID daripada set tika yang berbeza berdasarkan persekitaran.
Amalan Terbaik untuk Logik Dinamik
Walaupun berkuasa, logik dinamik kadangkala boleh menyebabkan konfigurasi lebih sukar difahami jika tidak digunakan dengan teliti. Berikut ialah beberapa petua:
- Pastikan mudah dibaca: Pecahkan ungkapan kompleks kepada bahagian-bahagian yang lebih kecil dan mudah diurus.
- Gunakan pemboleh ubah setempat: Simpan ungkapan bersyarat atau splat yang kompleks dalam blok
localsuntuk meningkatkan kebolehbacaan dan mengelakkan pengulangan. - Uji dengan teliti: Logik dinamik boleh menyebabkan kelakuan yang tidak dijangka. Sentiasa jalankan
terraform plandan semak perubahan yang dicadangkan dengan teliti. - Dokumentasikan: Tambahkan komen untuk menerangkan logik kompleks, terutamanya apabila menggabungkan ungkapan bersyarat dan splat.
Semakan Pantas
Perhatikan konfigurasi Terraform berikut:
variable "server_names" {
type = list(string)
default = ["web-01", "db-01", "cache-01"]
}
output "filtered_names" {
value = var.server_names[*]
}Ulang Kaji dan Langkah Seterusnya
Syabas! Anda telah mempelajari cara menjadikan konfigurasi Terraform anda lebih dinamik dan fleksibel:
- Kita meneroka ungkapan bersyarat (operator ternari) untuk menjadikan nilai dinamik berdasarkan syarat tertentu.
- Kita menguasai ungkapan splat (
[*]) untuk mengekstrak senarai atribut daripada koleksi objek atau sumber dengan cekap.
Alat-alat ini merupakan asas penting untuk membina infrastruktur sebagai kod yang boleh diskalakan, digunakan semula dan disesuaikan. Teruskan berlatih supaya dapat mengintegrasikannya ke dalam aliran kerja Terraform harian anda!
Pelajari Kem Intensif DevOps dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 142
- Pelajaran
- 568
Soalan Lazim
Adakah pelajaran “Ungkapan Bersyarat dan Splat” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif DevOps, termasuk “Ungkapan Bersyarat dan Splat”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Ungkapan Bersyarat dan Splat”?
Laksanakan logik bersyarat dalam konfigurasi anda menggunakan operator ternari dan fahami ungkapan splat untuk mengubah senarai objek. Anda berlatih Kem Intensif DevOps menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif DevOps?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif DevOps di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Ungkapan Bersyarat dan Splat” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif DevOps ini?
Ya. Setiap pelajaran Kem Intensif DevOps menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Menggunakan Gelung dengan `for_each` dan `count`
- Fungsi Terbina dalam Terraform
- Ungkapan Bersyarat dan Splat
- Blok Dinamik untuk Konfigurasi Bersarang