0Pricing
DevOps Bootcamp · Ders

Koşullu İfadeler ve Splat İfadeleri

Üçlü işleçleri kullanarak yapılandırmalarınızda koşullu mantık uygulayın ve nesne listelerini dönüştürmeye yönelik splat ifadelerini anlayın.

Koşullu İfadeler ve Splat İfadeleri, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 3. 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, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

Terraform'da Dinamik Mantık

Terraform yalnızca statik bildirimlerden ibaret değildir! Altyapı yapılandırmalarınızı daha akıllı ve uyarlanabilir hâle getirmek için dinamik mantık kullanırız.

Bu derste iki güçlü araç tanıtılmaktadır: koşullu ifadeler ve splat ifadeleri. Bunlar, altyapınızın farklı durumlara uyum sağlamasına ve verileri verimli şekilde dönüştürmesine yardımcı olur.

Koşullu İfadeler: Temel Bilgiler

Koşullu ifadeler (genellikle üçlü işleçler olarak adlandırılır), bir koşulun doğru veya yanlış olmasına göre iki değerden birini seçmenizi sağlar. Değerler için basit bir 'if-else' ifadesi gibidir.

  • Söz dizimi: condition ? value_if_true : value_if_false
  • Yapılandırmaları esnek ve yeniden kullanılabilir hâle getirmek, farklı ortamlara veya ayarlara uyarlamak için oldukça kullanışlıdır.

Koşullu İfade: Basit Değer Örneği

Bir koşullu ifadenin, bir giriş değişkenine göre yerel bir değişkenin değerini dinamik olarak nasıl belirleyebileceğini görelim. default = "dev" ifadesini default = "prod" olarak değiştirmeyi ve yeniden çalıştırmayı deneyin.

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."
}

Koşullu İfade: Kaynak Özniteliği Örneği

Koşullu ifadeleri kaynak özniteliklerini, hatta bir kaynağın oluşturulup oluşturulmayacağını denetlemek için de kullanabilirsiniz! Burada, count üst bağımsız değişkenini kullanarak bir S3 paketi koşullu olarak oluşturuyoruz.

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."
}

Splat İfadelerini Anlama

Splat ifadeleri ([*]), nesne listesini bu nesnelerdeki belirli özniteliklerin listesine dönüştürmek için kullanılır. Birden çok öğeden aynı anda veri çıkarmak için güçlü bir kısayoldur.

  • Söz dizimi: LIST_OF_OBJECTS[*].ATTRIBUTE
  • count ile oluşturulan birden çok kaynak veya karmaşık liste değişkenleri gibi koleksiyonlarla çalışmayı kolaylaştırır.

Splat: Kaynak Çıktıları Örneği

Birden çok EC2 örneği oluşturduğunuzu düşünün. Hepsinin genel IP adreslerinin listesini kolayca nasıl alırsınız? Splat ifadeleri bunun için idealdir! Not: AWS bölgeniz için geçerli bir AMI kullanmanız gerekir.

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: Değişken Listeleri Örneği

Splat ifadeleri yalnızca kaynaklar için kullanılmaz; karmaşık değişkenlerle de oldukça iyi çalışır. Burada bir kullanıcı nesneleri listemiz var ve yalnızca e-posta adreslerini çıkarmak istiyoruz.

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."
}

Koşullu İfadeleri ve Splat İfadelerini Birleştirme

Koşullu ve splat ifadeleri, daha gelişmiş ve kısa bir mantık oluşturmak için birleştirilebilir. Örneğin bir kaynak listesini koşullu olarak seçip ardından seçilen liste üzerinde bir splat ifadesi kullanabilirsiniz.

  • Bu, karmaşık senaryolara yanıt veren son derece uyarlanabilir yapılandırmalar oluşturmanızı sağlar.
  • Örnek: (var.env == "prod" ? aws_instance.prod : aws_instance.dev)[*].id, ortama göre farklı örnek kümelerindeki kimlikleri alabilir.

Dinamik Mantık İçin En İyi Uygulamalar

Güçlü olmasına rağmen dinamik mantık, dikkatli kullanılmadığında yapılandırmaların anlaşılmasını zorlaştırabilir. Bazı ipuçları şunlardır:

  • Okunabilir tutun: Karmaşık ifadeleri daha küçük ve yönetilebilir parçalara ayırın.
  • Yerel değerleri kullanın: Okunabilirliği artırmak ve tekrarı önlemek için karmaşık koşullu veya splat ifadelerini locals bloklarında saklayın.
  • Kapsamlı test edin: Dinamik mantık beklenmedik davranışlara yol açabilir. Her zaman terraform plan komutunu çalıştırın ve önerilen değişiklikleri dikkatle inceleyin.
  • Belgelendirin: Özellikle koşullu ve splat ifadelerini birleştirirken karmaşık mantığı açıklamak için yorumlar ekleyin.

Hızlı Kontrol

Aşağıdaki Terraform yapılandırmasını inceleyin:

variable "server_names" {
  type    = list(string)
  default = ["web-01", "db-01", "cache-01"]
}

output "filtered_names" {
  value = var.server_names[*]
}

Tekrar ve Sonraki Adımlar

Harika iş çıkardınız! Terraform yapılandırmalarınızı çok daha dinamik ve esnek hâle getirmeyi öğrendiniz:

  • Belirli koşullara göre değerleri dinamik hâle getirmek için koşullu ifadeleri (üçlü işleç) inceledik.
  • Nesne veya kaynak koleksiyonlarından öznitelik listelerini verimli şekilde çıkarmak için splat ifadelerinde ([*]) ustalaştık.

Bu araçlar ölçeklenebilir, yeniden kullanılabilir ve uyarlanabilir Kod Olarak Altyapı oluşturmanın temelidir. Bunları günlük Terraform iş akışlarınıza dâhil etmek için pratik yapmaya devam edin!

Sıkça Sorulan Sorular

“Koşullu İfadeler ve Splat İfadeleri” dersi ücretsiz mi?

Evet — “Koşullu İfadeler ve Splat İfadeleri” 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 DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

“Koşullu İfadeler ve Splat İfadeleri” dersinde ne öğreneceğim?

Üçlü işleçleri kullanarak yapılandırmalarınızda koşullu mantık uygulayın ve nesne listelerini dönüştürmeye yönelik splat ifadelerini anlayın. DevOps Bootcamp 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.

DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, 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 3. dersidir.

“Koşullu İfadeler ve Splat İfadeleri” 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 DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her DevOps Bootcamp 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

  1. `for_each` ve `count` ile Döngüleri Kullanma
  2. Terraform Yerleşik İşlevleri
  3. Koşullu İfadeler ve Splat İfadeleri
  4. İç İçe Yapılandırma için Dinamik Bloklar
← DevOps Bootcamp Sayfasına Dön