İç İçe Yapılandırma için Dinamik Bloklar
Dinamik blokları kullanarak yinelenen iç içe yapılandırma bloklarını programlı biçimde oluşturun ve güvenlik grubu kuralları gibi öğelerde kopyala-yapıştır ihtiyacını ortadan kaldırın.
İç İçe Yapılandırma için Dinamik Bloklar, CoddyKit'te ücretsiz bir Terraform Infrastructure as Code dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Terraform Infrastructure as Code öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Terraform Infrastructure as Code kursu toplamda 4 dersten oluşur.
Tekrarlama Sorunu
Bazı kaynaklar, bir güvenlik grubundaki birden çok ingress kuralı gibi tekrarlanan iç içe bloklar içerir. Her birini elle yazmak ayrıntılıdır ve DRY ilkesini korumayı zorlaştırır. Dinamik bloklar bunları bir koleksiyondan üretir.
Önce Statik Bloklar
İşte elle yazılan sürüm: Birbirine çok benzeyen üç ingress bloğu. Bunlardan bir düzinesini koruduğunuzu düşünün.
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"]
}
}Dinamik Bloğun Anatomisi
Bir dynamic bloğunda, iç içe bloğun adıyla eşleşen bir etiket, bir for_each koleksiyonu ve oluşturulan her örneği açıklayan bir content bloğu bulunur.
dynamic "ingress" {
for_each = var.rules
content {
from_port = ingress.value.port
to_port = ingress.value.port
protocol = "tcp"
cidr_blocks = ingress.value.cidrs
}
}Yineleyici Nesnesi
content içinde geçerli öğeye, blok etiketinin adını taşıyan bir nesne üzerinden başvurun. Bu nesne .value (öğe) ve .key (eşleme anahtarı veya liste dizini) özelliklerini sunar.
Girdi Değişkenini Tanımlama
Dinamik bloğu türü belirtilmiş bir değişkenle yönlendirin. Nesnelerden oluşan bir liste, her kuralın kendini açıklamasını sağlar.
variable "rules" {
type = list(object({
port = number
cidrs = list(string)
}))
}Hepsini Birleştirme
Artık kaç kural iletirseniz iletin kaynak kısa kalır.
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
}
}
}Yineleyiciyi Yeniden Adlandırma
iterator bağımsız değişkeni, yineleme değişkenini yeniden adlandırmanızı sağlar. İç içe dinamik bloklarda karışıklığı önlemek için kullanışlıdır.
dynamic "ingress" {
for_each = var.rules
iterator = rule
content {
from_port = rule.value.port
to_port = rule.value.port
}
}Blokları Koşullu Olarak Atlama
Sıfır blok üretmek için boş bir koleksiyon iletin. for_each üzerindeki üçlü ifade, bir bloğu isteğe bağlı hâle getirir.
dynamic "logging" {
for_each = var.enable_logging ? [1] : []
content {
target_bucket = var.log_bucket
}
}İç İçe Dinamik Bloklar
Dinamik bloklar iç içe yerleştirilebilir. İç bloğun her iki düzeye de belirsizlik olmadan başvurabilmesi için farklı yineleyiciler kullanın.
dynamic "setting" {
for_each = var.settings
iterator = s
content {
namespace = s.value.namespace
name = s.value.name
value = s.value.value
}
}Dinamik Blokların Kullanılmaması Gereken Durumlar
Dinamik bloklar dolaylılık ekler ve okunabilirliği azaltabilir. Yalnızca bir veya iki statik bloğunuz varsa bunları doğrudan yazın. Dinamik blokları, sayı verilerle belirlendiğinde kullanın.
Sonucu İnceleme
Oluşturulan blokların beklentilerle eşleştiğini doğrulamak için bir plan çalıştırın. Terraform, koleksiyondaki her öğeyi somut bir iç içe bloğa genişletir.
terraform planKısa Kontrol
Dinamik blok bilginizi test edin.
Özet: DRY İç İçe Yapılandırma
Dinamik bloklar, verilerden iç içe yapılandırma üretmenizi sağlar:
for_eachyinelemeyi yönlendirir;contenther bloğu tanımlar.- Yineleyici,
.valueve.keyözelliklerini sunar. - Boş koleksiyonlar blokları isteğe bağlı hâle getirir.
- Yapılandırmaların okunabilir kalması için ölçülü kullanın.
Sıkça Sorulan Sorular
“İç İçe Yapılandırma için Dinamik Bloklar” dersi ücretsiz mi?
Evet — “İç İçe Yapılandırma için Dinamik Bloklar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Terraform Infrastructure as Code kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Terraform Infrastructure as Code kursu toplamda 4 dersten oluşur.
“İç İçe Yapılandırma için Dinamik Bloklar” dersinde ne öğreneceğim?
Dinamik blokları kullanarak yinelenen iç içe yapılandırma bloklarını programlı biçimde oluşturun ve güvenlik grubu kuralları gibi öğelerde kopyala-yapıştır ihtiyacını ortadan kaldırın. Terraform Infrastructure as Code ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Terraform Infrastructure as Code öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Terraform Infrastructure as Code, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“İç İçe Yapılandırma için Dinamik Bloklar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Terraform Infrastructure as Code dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Terraform Infrastructure as Code dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- `for_each` ve `count` ile Döngüleri Kullanma
- Terraform Yerleşik İşlevleri
- Koşullu İfadeler ve Splat İfadeleri
- İç İçe Yapılandırma için Dinamik Bloklar