YAML Dünyası: DevOps Araçlarının Ortak Dili YAML Rehberi

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
DevOps dünyasına adım attığınızda karşınıza çıkan ilk şey muhtemelen karmaşık kod satırları değil, girintilerle süslenmiş, temiz görünümlü bir dosya olacaktır. Docker compose dosyalarından Kubernetes manifestlerine, GitHub Actions iş akışlarından Ansible playbook'larına kadar her yer YAML ile dolu.

Peki, neden her şey için YAML kullanıyoruz? Bu "ortak dil" neden bu kadar popüler ve onu hatasız kullanmanın sırrı ne? Gelin, DevOps'un alfabesi olan YAML dünyasını keşfedelim.


YAML Nedir? (YAML Ain’t Markup Language)​

YAML, insanlar tarafından kolayca okunabilen bir veri serileştirme dilidir. Başlangıçta "Yet Another Markup Language" (Bir Başka İşaretleme Dili) anlamına gelse de, daha sonra veriye odaklandığını vurgulamak için "YAML Ain’t Markup Language" (YAML Bir İşaretleme Dili Değildir) şeklinde bir özyinelemeli kısaltmaya dönüştürülmüştür.

JSON ile kıyaslandığında, YAML'ın en büyük avantajı süslü parantezler ({}) veya tırnak işaretleri yerine boşlukları (indentation) kullanmasıdır. Bu, dosyaların bir şiir gibi okunmasını sağlar.


YAML'ın Altın Kuralları: Dikkat Etmeniz Gerekenler​

YAML basit görünür ancak çok "huylu" bir dildir. En ufak bir hata tüm sisteminizi (örneğin Kubernetes cluster'ınızı) kilitleyebilir.

  1. Tab Tuşu Yasaktır: YAML'da girintileme için asla "Tab" tuşunu kullanmayın. Daima boşluk (space) kullanmalısınız (Genellikle 2 boşluk standarttır).
  2. Büyük/Küçük Harf Duyarlılığı: Servis ve servis tamamen farklı şeylerdir.
  3. Hiyerarşi Önemlidir: Bir satırın altındaki satır daha içerideyse, o üsttekinin bir parçası (çocuğu) kabul edilir.
  4. Dosya Uzantısı: Genellikle .yaml veya .yml olarak kaydedilir.

Temel YAML Yapıları ve Sözdizimi​

YAML'ı anlamak için sadece üç temel yapıyı bilmeniz yeterlidir:

1. Key-Value (Anahtar-Değer) Çiftleri​

En temel yapı budur. Bir anahtar ve ona karşılık gelen bir değer.

app_adi: XenForo_Forum
surum: 2.2.15
durum: aktif


2. Listeler (Sequences)​

Aynı seviyedeki elemanları listelemek için kısa çizgi (-) kullanılır.

eklentiler:
- Kaynak_Yöneticisi
- Medya_Galerisi
- Ödeme_Duvarı

3. Sözlükler ve Nesneler (Mappings)​

Bir anahtarın altında birden fazla özellik barındırmak için kullanılır.

veritabani_ayarlari:
host: localhost
port: 3306
kullanici: admin

DevOps Araçlarında YAML Kullanımı​

YAML'ın neden DevOps'un ortak dili olduğunu anlamak için popüler araçlardaki rollerine bakalım.

Docker Compose​

Birden fazla konteyneri tek bir dosyada tanımlamak için YAML kullanırız.

services:
web:
image: nginx:latest
ports:
- "80:80"

Kubernetes (K8s)​

Bir uygulamanın kaç kopya çalışacağını, hangi portu kullanacağını YAML ile anlatırız.

apiVersion: v1
kind: Pod
metadata:
name: forum-pod
spec:
containers:
- name: php-container
image: php:8.2

XenForo Forumu İçin Örnek Bir YAML Pipeline Yapısı​

Diyelim ki bir XenForo eklentisi geliştiriyorsunuz ve kodunuzu her güncellediğinizde otomatik olarak test edilmesini istiyorsunuz. İşte bir GitHub Actions (YAML tabanlı) örneği:

# .github/workflows/test.yml
# XenForo Eklenti Test Süreci

name: Eklenti_Test_Pipeline

on:
push:
branches: [ main ] # Sadece main branch'e kod gelince çalış

jobs:
lint-test:
runs-on: ubuntu-latest
steps:
- name: Kodu_Cek
uses: actions/checkout@v3

- name: PHP_Hazirla
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'

- name: Syntax_Kontrolu
run: |
echo "PHP kodları taranıyor..."
php -l ./src/addons/MyAddon/*.php

- name: Basari_Mesaji
run: echo "Tüm testler başarıyla tamamlandı!"

YAML Yazarken Hayat Kurtaran İpuçları​

  • Linting Kullanın: YAML dosyanızı kaydetmeden önce bir "YAML Linter" aracından (VS Code eklentileri veya online araçlar) geçirin. Görünmez bir karakter her şeyi bozmuş olabilir.
  • Yorum Satırları: # karakterini kullanarak kodunuza notlar ekleyin. DevOps süreçlerinde dökümantasyon hayat kurtarır.
  • Çok Satırlı Metinler: Eğer uzun bir metin (örneğin bir script bloğu) yazacaksanız | (satır sonlarını korur) veya > (satır sonlarını boşluğa çevirir) operatörlerini kullanın.

Sonuç: YAML Bir Araç Değil, Bir Standarttır​

YAML öğrenmek, aslında modern bilişim dünyasının protokolünü öğrenmektir. Bir kez YAML mantığını kavradığınızda, Terraform'dan Ansible'a, AWS CloudFormation'dan GitLab CI'ya kadar tüm araçlar size tanıdık gelmeye başlayacaktır.

Gördüğünüz gibi, YAML aslında karmaşık sistemleri "konuşarak" yönetmemizi sağlıyor.
 
Geri
Üst