Bersihkan dan sederhanakan daftar – Beragampengetahuan
Di Terraform, banyak konfigurasi yang dinamis dan Anda dapat membuat daftar menggunakan ekspresi bersyarat yang dikembalikan null Jika tidak berlaku. Jika itu null Nilai diteruskan langsung ke sumber daya (mis. security_group_ids atau depends_on), mereka dapat menyebabkan kesalahan verifikasi.
ini compact() Fungsi memastikan bahwa hanya elemen non-magnetik yang valid yang dimasukkan, sehingga membantu mencegah kesalahan runtime tersebut selama fase aplikasi.
Contents
Fitur kompak terraform
ini compact() Fungsi Penghapusan Terraform null dan string kosong ("") Elemen dalam daftar dan mengembalikan daftar baru yang hanya berisi elemen string non-nol non-nol. Ini adalah bagian dari perpustakaan standar Terraform dan sangat berguna saat menggunakan ekspresi dinamis yang dapat memperkenalkan nilai -nilai yang tidak valid, seperti logika bersyarat atau variabel interpolasi.
Sintaksnya sederhana: compact(list)Di mana list adalah input yang mungkin termasuk entri kosong. Misalnya, compact(["a", "", "b"]) kembali ["a", "b"].
catatan: ini compact Fungsi dihapus saja null dan string kosong ("")elemen. Itu benar TIDAK Hapus nilai palsu lainnya false,,,,, 0atau daftar kosong ([]).
Kapan Menggunakan Fitur Kompak
Fitur ringkas di Terraform membantu membuat daftar yang bersih dan andal, terutama dalam konfigurasi kompleks yang melibatkan logika bersyarat atau input pengguna. Berikut adalah beberapa kasus penggunaan umum:
- Parameter sumber daya bersyarat: menggunakan
compact()Untuk memfilter nol dari daftar dengan elemen bersyarat untuk memastikan bahwa hanya nilai yang valid yang dilewati. - Gabungkan variabel default dan override: Saat menggabungkan daftar dari berbagai sumber,
compact()Hapus nol untuk menghasilkan nilai yang bersih dan digabungkan. - Parameter output atau modul: Cegah kesalahan
terraform applyDengan menghilangkan nol dalam input output atau modul yang hanya diharapkan menjadi string atau ID yang valid. - Secara kondisional termasuk dalam loop: Di sebuah
forLoop, kembalinullUntuk melewatkan elemen, lalu gunakancompact()Kecualikan mereka dari daftar akhir. - Logika penyaringan yang disederhanakan: Ganti eksternal
ifKondisi dan inlinenullHadiah dari mayat yang beredar, diikuti olehcompact()Sederhanakan pemfilteran daftar. Misalnya:
memikirkan var.names setara [“Alice”, “skip”, “Bob”, “skip”, “Charlie”]
[for item in var.names : item != "skip" ? item : null] -> this will transform the list in [“Alice”, null, “Bob”, null, “Charlie”]
Bisa:
compact([for item in var.names : item == "skip" ? null : item]) -> this will transform the list in [“Alice”, “Bob”, “Charlie”]
Cara menggunakan fitur kompak terraform
Berikut adalah enam contoh penggunaan compact Fitur, termasuk beberapa fitur dasar dan lebih canggih.
Satu hal yang perlu diingat sebelum kita pergi ke contoh adalah compact() Fungsi hanya berfungsi pada daftar di mana semua elemen adalah string (string dapat bertahan). Terraform dapat menghasilkan kesalahan tipe jika Anda melewati tipe kompleks seperti objek atau angka.
Contoh 1: Hapus kosong dari daftar sederhana
Contoh ini menunjukkan daftar statis dengan beberapa null nilai. ini compact() Fungsi memindai daftar dan menyaring apapun null Dan "" Entri, hanya kembali ["value1", "value2", "value3"].
variable "input_list" {
default = ["value1", null, "value2", null, "value3"]
}
output "cleaned_list" {
value = compact(var.input_list)
}
Ini adalah kasus penggunaan yang paling mudah, seringkali dalam preprocessing variabel.
Contoh 2: Daftar Dinamis dengan Nilai Bersyarat
Di sini, daftar tersebut mencakup nilai bersyarat yang dapat dievaluasi null.
jika include_extra Itu salah, "optional" Nilai dihilangkan. compact() Pastikan daftar terakhir tidak disimpan null,menghasilkan ["core", "final"]. Ini membantu menghindari masalah dalam modul yang tidak dapat ditoleransi null Nilai dalam daftar.
variable "include_extra" {
default = false
}
locals {
list = compact([
"core",
var.include_extra ? "optional" : null,
"final"
])
}
output "result" {
value = local.list
}
Contoh 3: Menggunakan daftar kompak dan datar
Dalam contoh ini, kami pertama kali menggunakan flatten()dan kemudian lulus hasilnya compact() Hapus apapun null nilai. Hasil akhirnya adalah daftar yang bersih dan datar: ["a", "b", "c"].
locals {
nested_lists = [
["a", null],
[null, "b"],
["c"]
]
flat_and_clean = compact(flatten(local.nested_lists))
}
output "flat_cleaned_list" {
value = local.flat_and_clean
}
Metode ini berguna saat memproses output dari modul atau sumber data jarak jauh yang mengembalikan struktur bersarang.
Contoh 4: Menggabungkan Compact dengan Concat untuk Daftar Dinamis
Terraform concat() Fungsi menghubungkan dua daftar – satu statis dan satu kondisi.
jika add_debug Ya false,,,,, ["debug"] Diganti [null]Tetapi compact() Pastikan daftar gabungan tidak termasuk yang tidak diinginkan null.
variable "add_debug" {
default = false
}
locals {
base = ["main", "worker"]
debug = var.add_debug ? ["debug"] : [null]
final_roles = compact(concat(local.base, local.debug))
}
output "roles" {
value = local.final_roles
}
catatan: concat() Mengharuskan setiap argumen untuk menjadi daftar, atau bahkan penampung [null]bukan hanya nulljika tidak, kesalahan akan dijatuhkan.
Contoh 5: Menggunakan input kompak dalam modul
Di sini, modul root meneruskan daftar yang dibangun secara dinamis ke submodule. Daftar ini mencakup elemen opsional berdasarkan variabel input. compact() Saring null Sebelum masuk ke modul, pastikan services Selalu menerima daftar bersih.
# root/main.tf
module "example" {
source = "./modules/service"
services = compact([
"api",
var.enable_cache ? "cache" : null,
var.enable_auth ? "auth" : null
])
}
# root/variables.tf
variable "enable_cache" {
default = true
}
variable "enable_auth" {
default = false
}
# modules/service/variables.tf
variable "services" {
type = list(string)
}
# modules/service/main.tf
output "services_used" {
value = var.services
}
Contoh 6: Gunakan compact in for_each untuk melewatkan elemen yang tidak perlu
Terraform membutuhkan for_each Kunci tidak valid dan unik, sehingga dapat digunakan compact() Ini memastikan iterasi yang aman dan efektif.
Di bawah, kami menelusuri daftar nama pengguna yang mungkin disertakan null nilai. Sebelum melamar for_each,,,,, compact() Pastikan semuanya null Entri dikecualikan.
variable "users" {
default = ["alice", null, "bob", null, "carol"]
}
resource "null_resource" "user_setup" {
for_each = toset(compact(var.users))
triggers = {
user = each.key
}
}
Anda juga dapat menggunakan terraform toset() Kemampuan untuk menghapus duplikat, jadi jika penting untuk menyimpan duplikat atau pesanan, gunakan for Loop di luar daftar.
Concat dan terraform compact
Fungsi CONCAT di Terraform digunakan untuk menggabungkan beberapa daftar menjadi satu daftar. Dibutuhkan dua atau lebih parameter daftar dan mengembalikan daftar baru dengan semua elemen dalam urutan yang diberikan.
Terraform compact() Hapus semua null dan string kosong ("") Nilai dalam daftar. Namun, itu tidak mengubah jenis nilai lain, juga tidak menggabungkan daftar.
Misalnya:
concat(["a"], ["b", null]) => ["a", "b", null]
compact(["a", null, "b"]) => ["a", "b"]
Anda bisa menggunakannya concat Tambahkan daftar bersama compact Menghapus string kosong dalam daftar. Fitur -fitur ini juga dapat digabungkan ketika Anda perlu menggabungkan daftar dan menghapus entri kosong.
Poin -poin penting
ini compact() Fitur di Terraform dapat menyederhanakan kode Anda dengan menghapus apa pun null atau nilai string kosong dalam daftar untuk membuat konfigurasi Anda lebih aman, rawan kesalahan dan lebih mudah dipelihara.
rencana pengembangan website
metode pengembangan website
jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website
#Bersihkan #dan #sederhanakan #daftar