Ana içeriğe atla

YAML nedir? Temeller, Sözdizimi ve Kullanım Alanları

YAML, yapılandırmalar, otomasyon ve veri serileştirme için basit ama güçlü bir formattır. Gerçek dünya örnekleriyle nasıl çalıştığını öğrenin!
Güncel 16 Nis 2026  · 14 dk. oku

Yıllar içinde sayısız yapılandırma dosyasıyla çalıştım ve YAML sadeliği ve okunabilirliğiyle öne çıktı. İster Kubernetes’te iş akışları kurun, ister Docker’da servisleri tanımlayın ya da API isteklerini yapılandırın, YAML karmaşık yapılandırmaları daha yönetilebilir hale getirir. Girintiye dayalı temiz yapısı, XML gibi formatların karmaşasını ortadan kaldırırken esnekliğini korur.

Bu rehberde, YAML’ın sözdizimini, yapısını, ileri düzey özelliklerini ve en iyi uygulamalarını adım adım anlatarak güvenle çalışmanızı sağlayacağım. 

YAML nedir?

YAML (Yet Another Markup Language / YAML Ain’t Markup Language), okunabilirliğe ve kolay kullanıma öncelik veren bir veri serileştirme formatıdır. XML, HTML benzeri iç içe etiketler kullanırken; JSON, parantezler ve tırnaklar kullanır ve Python sözlüklerine benzer. YAML ise daha yalındır ve yapıyı tanımlamak için girintileme kullanır; bu da onu insanlar için daha anlaşılır kılar.

YAML, skalerler (metin, sayı, boolean), sıralar (listeler) ve eşlemeler (anahtar-değer çiftleri) dahil çeşitli veri türlerini destekler. Kubernetes, Docker ve Ansible gibi araçlarda özellikle olmak üzere yapılandırma dosyalarında, altyapı otomasyonunda ve veri alışverişinde yaygın olarak kullanılır.

Ayrıca YAML, JSON’un bir üst kümesidir; yani geçerli JSON dosyaları YAML olarak ayrıştırılabilir. YAML dosyaları genellikle .yaml veya .yml uzantısına sahiptir.

YAML hakkında daha fazlasını resmî web sitesinden de öğrenebilirsiniz!

YAML Sözdizimi ve Yapısı

Bu bölümde anahtar-değer çiftleri, listeler, iç içe veri ve yorumlar dahil olmak üzere YAML sözdiziminin temel ilkelerini ele alacağız.

Temel sözdizimi kuralları

YAML için birkaç temel sözdizimi kuralı vardır: 

  • Boşluk girintisi yapıyı belirtir; sekme kullanmaktan kaçının! 
  • Anahtar-değer çiftleri, diğer dillere benzer şekilde key: value yapısını izler. 
  • Satır başında kısa çizgi kullanmak bir listeyi ifade eder. 
  • # kullanmak yorum satırları oluşturur.
# Here is an example of YAML
name: John Doe
age: 30
skills:
  - Python
  - YAML

Anahtar-değer çiftleri

YAML, verileri Python’daki sözlüklere benzer şekilde anahtar-değer çiftleri olarak temsil eder. Bu genellikle farklı yapılandırma dosyalarına ve ayarlara verilen bilgileri ifade eder. Metinleri veya anahtarları tırnak içine almanıza gerek yoktur; yalnızca gereken anahtar ve değerleri yazın:

location: New York
country: USA
security-level: user

YAML’de listeler

Listeler kısa çizgi (-) kullanılarak gösterilir. Bu, tek bir anahtar altında birden fazla öğe listelemenizi sağlar. İşaretleme düzenleyicileriyle görüntülendiğinde genellikle madde işaretleriyle gösterilir.

fruits:
  - Apple
  - Banana
  - Cherry

İç içe veri

İç içe yapılar, girinti kullanarak hiyerarşik veri gösterimine olanak tanır. Bunları iç içe sözlükler gibi düşünebilirsiniz. Girinti kullanarak hangi anahtarların diğerlerinin alt kümesi olduğunu belirtirsiniz.

person:
  name: Alice
  details:
    age: 25
    city: London

Yorumlar

Yorumlar # ile başlar ve YAML ayrıştırıcıları tarafından yok sayılır. Bu yorumlar tek satırlıdır.

# This is a comment
username: admin
password: secret

Gelişmiş YAML Özellikleri

YAML, belgeleri daha verimli ve düzenli hale getiren çok satırlı metinler, veri türleri ve çapalar gibi güçlü özellikler içerir. Bu bölümde bu yetenekleri pratik örneklerle inceleyeceğiz.

Çok satırlı metinler

YAML, | (literal blok) veya > (katlanmış blok) kullanarak çok satırlı metinleri destekler. 

  • | literal blok, her satır sonu için yeni bir satır \n oluşturur. 
  • > katlanmış blok, yalnızca ardışık satır sonlarında yeni satır oluşturur.
literal: |
  This is a
  multi-line string.

folded: >
  This is another
  multi-line string.

Yukarıdakiler çıktıyı göstererek daha iyi anlaşılır.

  • | (literal blok) için:
This is a
multi-line string.
  • > (katlanmış blok) için:
This is another multi-line string.

YAML’de veri türleri

YAML; metinler, sayılar, boolean’lar ve null değerler dahil çeşitli veri türlerini destekler. Biçimlendirmeye göre türleri otomatik algılar, ancak açık tür tanımlamalarına da izin verir.

Aşağıdaki örnek YAML’de temel veri türlerinin kullanımını gösterir:

string_implicit: Hello, YAML!  # No quotes needed unless necessary
string_double_quoted: "Supports escape sequences like \n and \t"
string_single_quoted: 'Raw text, no escape sequences'

integer: 42  # Whole numbers
float: 3.14  # Numbers with decimals

boolean_true: true
boolean_false: false

null_value: null  # Null value
null_tilde: ~  # Another way to represent null

YAML gerektiğinde !!type kullanarak açık tür bildirimlerine izin verir:

explicit_string: !!str 123  # Forces 123 to be a string
explicit_integer: !!int "42"  # Forces "42" to be an integer
explicit_float: !!float "3.14"  # Forces "3.14" to be a float

YAML genellikle yapılandırılmış veriler için kullanıldığından şunları destekler:

  • Listeler (sıralar):
fruits:
  - Apple
  - Banana
  - Cherry
  • Sözlükler (eşlemeler):
person:
  name: Alice
  age: 30
  is_student: false

Çapalar ve takma adlar

YAML, çapalar (&) kullanarak yeniden kullanılabilir değerler tanımlamanıza ve bunlara daha sonra takma adlarla (*) başvurmanıza olanak tanır. Bu, yapılandırma dosyalarındaki tekrarları azaltarak onları daha temiz ve bakımı kolay hale getirir.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  host: example.com
  retries: *default_settings  # Reuses the retries value from defaults

<<: sözdizimi, bir çapadaki anahtar-değer çiftlerini başka bir eşlemeye birleştirmeye olanak tanır. Bir anahtar her ikisinde de varsa, yeni değer özgün olanın üzerine yazar.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  <<: *default_settings  # Merges all key-value pairs from default_settings
  host: example.com  # This key is added to the merged data

Nihai çözümlenmiş yapı şöyledir:

server1:
  retries: 3
  timeout: 30
  host: example.com

Çapalar ve takma adlar, değerleri elle tekrarlamanın verimsiz olacağı büyük yapılandırma dosyalarında özellikle kullanışlıdır. YAML dosyalarını DRY (Don’t Repeat Yourself) ilkesine uygun tutar ve güncellemeleri kolaylaştırır.

YAML’in Yaygın Kullanım Alanları

YAML yazılım geliştirme, altyapı otomasyonu ve API yönetiminde yaygın olarak kullanılır. İnsan tarafından okunabilir sözdizimi, onu yapılandırma dosyaları, veri serileştirme ve Kod Olarak Altyapı (IaC) için tercih edilen bir format yapar. En yaygın uygulamalarını inceleyelim.

Yapılandırma dosyaları

YAML, Docker Compose, Kubernetes ve gibi uygulamalarda CI/CD iş akışları için geniş ölçüde kullanılır. Anlaşılması kolay olduğu için herkes Docker YAML kurulum dosyalarını alıp neler olduğunu rahatça anlayabilir.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80

YAML’ın okunabilirliği ve çapalar ile takma adları desteklemesi, tekrarları azaltmaya yardımcı olarak onu JSON veya XML’e kıyasla daha sürdürülebilir kılar.

YAML ve Docker’daki kullanımına dair daha fazlasını bu orta seviye Docker kursunda öğrenin.

Veri serileştirme ve aktarımı

YAML, karmaşık veri yapılarını insan tarafından okunabilir ve makineler tarafından kolayca ayrıştırılabilir bir formata dönüştürerek API’ler ve yapılandırma yönetimi araçları için verileri serileştirmede kullanılır. 

Örneğin, YAML ile biçimlendirilmiş bir API istek gövdesi:

user:
  id: 123
  name: "John Doe"
  email: "johndoe@example.com"
  active: true

YAML’ın girintiye dayalı yapısı gereksiz sözdizimini ortadan kaldırır; JSON’a kıyasla daha hafif, okunabilir ve düzenlemesi kolaydır.

Kod Olarak Altyapı (IaC)

Ansible ve Kubernetes gibi yapılandırma yönetimi araçları, sistem durumlarını tanımlamak, süreçleri otomatikleştirmek ve ortamlar arasında tutarlılık sağlamak için YAML’dan yararlanır.

  • Ansible’da YAML, sistem durumlarını, görevleri ve bağımlılıkları tanımlayan playbook’ları yazmak için kullanılır; altyapı bileşenlerinin tutarlı şekilde yapılandırılmasını sağlar. 
  • Kubernetes, pod’lar, servisler ve deployment’lar gibi kaynakları tanımlamak için YAML manifestlerinden yararlanır; konteynerleştirilmiş uygulamaların otomatik orkestrasyonunu mümkün kılar.

İşte bir Kubernetes Pod yapılandırması örneği:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app-container
      image: my-app:latest
      ports:
        - containerPort: 8080

YAML’ın Kubernetes’te nasıl kullanıldığını bu Introduction to Kubernetes kursunda öğrenin.

API dokümantasyonu

OpenAPI ve Swagger gibi API spesifikasyonları, uç noktaları ve veri yapıları kolay okunur bir şekilde tanımlamak için YAML kullanır. YAML, API metotlarını, istek parametrelerini, yanıt formatlarını ve kimlik doğrulama yöntemlerini ana hatlarıyla belirtmekte kullanılır.

İşte YAML ile yazılmış bir OpenAPI spesifikasyonu örneği:

openapi: 3.0.0
info:
  title: User API
  version: "1.0"
paths:
  /users:
    get:
      summary: Retrieve a list of users
      responses:
        "200":
          description: Successful response

Örneğin OpenAPI spesifikasyonları, RESTful API’leri dokümante etmek için YAML kullanır. Bu sayede istemci SDK’ları üretmek, etkileşimli API dokümantasyonu ve otomatik testler sağlamak için net bir plan sunarlar. Bu yapılandırılmış format, API uygulamaları arasında tutarlılığı güvence altına alır.

YAML Dosyalarıyla Çalışma

YAML, yapılandırma dosyaları, otomasyon ve veri serileştirmede yaygın olarak kullanılır; ancak girintiye dayandığından doğru biçimlendirme kritiktir. YAML’ı etkili bir şekilde okuma, yazma, doğrulama ve düzenleme yöntemleri şöyledir.

Python’da YAML okuma ve yazma

Python’un PyYAML kütüphanesi YAML’ı ayrıştırıp üretebilir.

Aşağıdaki gibi bir yapılandırma YAML dosyanız olduğunu hayal edin:

database:
  host: localhost
  port: 5432
  user: admin
  password: secret

Python’da yapılandırma dosyanızla şu şekilde çalışabilirsiniz:

import yaml

# Load YAML data
with open("config.yaml", "r") as file:
    data = yaml.safe_load(file)  # safe_load prevents arbitrary code execution

# Modify data (optional)
data["database"]["user"] = "new_user"

# Write YAML data
with open("output.yaml", "w") as file:
    yaml.dump(data, file, default_flow_style=False)

Python’da JSON verileriyle çalışmakla ilgileniyorsanız, kapsamlı Python JSON rehberine göz atın.

YAML dosyalarını doğrulama

Doğru yapıyı sağlamak için, boşluk yerine sekme kullanımı veya yinelenen karakterler, sözdizimi sorunları ve sonda boşluklar gibi garip durumları kontrol etmek üzere araçlar kullanabilirsiniz.

Bazı popüler YAML doğrulayıcıları şunlardır:

YAML düzenleme

YAML’ı herhangi bir metin düzenleyicide yazıp düzenleyebilirsiniz; ancak lint araçları ve sözdizimi vurgulama okunabilirliği artırır.

Favori düzenleyicilerimden bazıları:

  • VS Code (YAML eklentileriyle)
  • PyCharm (yerleşik destek)
  • Sublime Text (YAML sözdizimi vurgulamayla)

YAML’de Kaçınılması Gereken Yaygın Hatalar

Basitliğine rağmen YAML ile çalışırken yine de kolayca sorunlar ve yazım hataları yaşayabilirsiniz. Bu bölümde bu hataları ele alıyor ve temiz, doğru dosyalar yazmak için en iyi uygulamaları sunuyoruz. Bu yüzden bir linter veya metin düzenleyici kullanmanızı da öneriyorum!

Sekmeler ve boşlukları karıştırmak

YAML, girinti için boşluklara dayanır—asla boşluk ve sekmeleri karıştırmayın. Sekmeler YAML betiğinizi bozacaktır. Bu bilinçli bir tercihtir; farklı sistemler sekmeleri farklı okuyabildiğinden etkiyi en aza indirmek için boşlukların kullanımı tercih edilir.

Yanlış girintileme

Ayrıştırma hatalarını önlemek için tutarlı girintileme sağlayın. Girintiler YAML’ın hiyerarşiyi belirtmenin tek yolu olduğundan, yanlış ayrıştırma kodunuzda sorunlara yol açabilir. Bir key: value çiftini kolayca yanlış yerde bırakabilirsiniz; bu yüzden girintilere dikkat edin!

Özel karakterler için tırnakları unutmak

Özel karakterler veya boşluk içeren metinler için tırnak kullanın. Ters eğik çizgi, virgül, ünlem işareti vb. karakterlerin metin olarak okunabilmesi için tırnak gerekir.

path: "/home/user/documents"
message: "Hello, World!"

Doğru doğrulama, yapılandırılmış düzenleme ve Python’un PyYAML’ını kullanarak, YAML dosyalarıyla verimli bir şekilde çalışırken yaygın tuzaklardan kaçınabilirsiniz.

Sonuç

YAML, yapılandırma, veri serileştirme ve altyapı otomasyonunda yaygın olarak kullanılan güçlü ama basit bir formattır. Sözdizimini, yapısını ve en iyi uygulamalarını anlayarak çeşitli uygulamalarda YAML ile etkili bir şekilde çalışabilirsiniz.

YAML’ı gerçek dünyada uygulamakla ilgileniyorsanız:

SSS

YAML evrensel midir?

Veri kaynağı veya hedef YAML’ı okuyabildiği sürece, veriyi serileştirmek ve taşımak için uygun ve kullanışlı bir yöntemdir. Veriyi YAML işleyebilen bir hedefe gönderdiğinizden emin olun.

YAML güvenli midir? YAML dosyaları güvenlik riski oluşturabilir mi?

YAML’ın kendisi yalnızca bir veri formatıdır; ancak güvenilmeyen YAML dosyaları ayrıştırılırken güvenlik riskleri ortaya çıkar. Python’daki PyYAML kütüphanesinin varsayılan yaml.load() yöntemi, YAML içine gömülü rastgele kodu çalıştırabilir ve bu da risklidir. Bunun yerine, kötü amaçlı kodun istemeden çalıştırılmasını önlemek için her zaman yaml.safe_load() kullanın. Benzer şekilde, YAML’ı uygulamalarda kullanırken güvenlik açıklarını önlemek için sıkı şema doğrulaması uygulayın.

YAML ortam değişkenlerini destekler mi?

Evet! YAML’ın kendisi ortam değişkenlerini doğrudan işlemez; ancak birçok araç (Docker Compose ve Kubernetes gibi) YAML dosyalarında ortam değişkenlerine referans vermeye izin verir.

YAML’de yorumlar nasıl ele alınır?

YAML, # sembolünü kullanarak tek satırlı yorumları destekler; ancak çok satırlı yorumları desteklemez. Çok satırlı yorumlara ihtiyacınız varsa, yaygın bir geçici çözüm _comment gibi sahte bir anahtar kullanmaktır. Ancak bu yalnızca bir konvansiyondur ve uygulamanız özellikle filtrelemediği sürece YAML ayrıştırıcıları tarafından yok sayılmaz.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Mekânsal analiz, makine öğrenimi ve veri hatları konusunda deneyime sahip bir veri bilimciyim. GCP, Hadoop, Hive, Snowflake, Airflow ve diğer veri bilimi/mühendisliği süreçleriyle çalıştım.

Konular

Bu kurslarla veri mühendisliği hakkında daha fazla bilgi edinin!

Program

Veri Mühendisi Python'da

40 sa
Verileri verimli bir şekilde almak, temizlemek, yönetmek, işlem hatlarını planlamak ve izlemek için talep edilen becerileri kazanın ve veri mühendisliği alanında fark yaratın.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör