YAML Ayrıştırıcı

YAML (YAML Ain't Markup Language), yapılandırma dosyaları için popüler olan, insan tarafından okunabilir bir veri serileştirme formatıdır. Bu araç, çapalar, takma adlar ve çoklu belge akışları dahil olmak üzere tam YAML 1.2 spesifikasyonu desteğiyle YAML'ı ayrıştırır ve sonucu etkileşimli bir ağaç görünümünde gösterir.

Spesifikasyonlar

Yaygin Kullanim Alanlari

  • Kubernetes manifestolarını ayrıştırma ve doğrulama (Deployment, Service, ConfigMap)
  • Docker Compose ve docker-compose.yml dosyalarını okuma
  • GitHub Actions, GitLab CI veya CircleCI iş akışlarını hata ayıklama
  • Ansible playbook'larını programatik işleme için JSON'a dönüştürme
  • Helm chart values dosyalarını doğrulama

Ozellikler

  • Tam YAML 1.2 spesifikasyonu desteği
  • Yeniden kullanılabilir içerik için çapaları (&) ve takma adları (*) işleme
  • Çoklu belge akışlarını ayrıştırma (--- ayırıcılar)
  • JSON, TOML veya XML'e dönüştürme
  • Satıra özgü hata mesajlarıyla sözdizimi doğrulama
  • İç içe yapılar için etkileşimli ağaç görünümü

Ornekler

Kubernetes Deployment

Deneyin →

Çoğaltılmış bir nginx pod'u tanımlayan Kubernetes Deployment manifestosu.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx

Docker Compose

Deneyin →

Web ve veritabanı hizmetlerini tanımlayan bir Docker Compose dosyası.

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret

Ipuclari

  • YAML girinti duyarlıdır. Sekme değil, boşluk kullanın.
  • Özel karakter içermedikçe dizelerde tırnak işareti gerekmez.
  • İçerik tekrarını önlemek için çapalar (&ad) ve takma adlar (*ad) kullanın.
  • Çok satırlı dizeler | (değişmez) veya > (katlanmış) blok skalerleri kullanabilir.

Anlama YAML Ayrıştırıcı

YAML (YAML Ain't Markup Language), DevOps, bulut altyapısı ve uygulama yapılandırmasında yaygın olarak kullanılan, insan tarafından okunabilir bir veri serileştirme formatıdır. Girinti tabanlı sözdizimi, köşeli parantezlerin ve süslü parantezlerin görsel karmaşasını ortadan kaldırarak kod olarak altyapı araçları, CI/CD ardışık düzenleri ve konteyner orkestrasyonu için tercih edilen format haline gelmiştir.

YAML'ın temel gücü okunabilirliktir. Bir Kubernetes Deployment manifestosu, GitHub Actions iş akışı veya Docker Compose dosyası YAML ile yazıldığında bir bakışta anlaşılabilir. Format, skalerler (dizeler, sayılar, boolean'lar, null, tarihler), diziler (array'ler) ve eşlemeler (anahtar-değer çiftleri) destekler. Dizeler genellikle tırnak işareti gerektirmez, çok satırlı içerik değişmez blokları (|) veya katlanmış blokları (>) kullanabilir ve çapalar (&) ile takma adlar (*) bir değeri bir kez tanımlayıp birden çok kez referans vermenizi sağlayarak büyük yapılandırma dosyalarında tekrarı azaltır.

YAML 1.2, güncel spesifikasyon, JSON'un kesin bir üst kümesidir: her geçerli JSON belgesi aynı zamanda geçerli bir YAML'dır. Bu, aynı dosya içinde YAML ve JSON sözdizimini karıştırabileceğiniz anlamına gelir. --- ayırıcısı ile çoklu belge desteği, tek bir dosyaya birden fazla bağımsız belge gömmenize olanak tanır; bu Kubernetes manifestolarında ve Helm şablonlarında yaygındır.

YAML'ın başlıca tuzağı boşluk duyarlılığıdır. Girintileme için sekmelere izin verilmez (yalnızca boşluklar) ve yanlış hizalanmış bir anahtar belge yapısını sessizce değiştirebilir. "Norveç sorunu" — tırnak işareti olmayan "no", "yes", "on" ve "off" gibi değerlerin boolean olarak yorumlanması — bir başka kötü şöhretli hata kaynağıdır. YAML 1.2 bu sorunların bazılarını ele aldı, ancak birçok ayrıştırıcı hâlâ varsayılan olarak YAML 1.1 kurallarını kullanır.

YAML 1.1, yes/no, on/off, true/false ve bunların büyük harfli varyantlarını içeren geniş bir boolean değişmez kümesi tanımlar. NO gibi bir ülke kodu boolean false olarak ayrıştırılır ve "on" dizesi true olur — kötü şöhretli "Norveç sorunu". YAML 1.2, boolean'ları yalnızca true ve false ile sınırlandırır, ancak birçok popüler ayrıştırıcı (PyYAML dahil) hâlâ varsayılan olarak YAML 1.1 kurallarını kullanır. Güvenli çözüm, yanlış yorumlanabilecek dizeleri her zaman tırnak içine almaktır. Sekme karakterleri de girintileme için kesinlikle yasaktır; yalnızca boşluklara izin verilir ve girintilemede bir sekme ayrıştırma hatasına neden olur. Seviye başına iki boşluk en yaygın kuraldır.

YAML, çok satırlı dizeler için iki blok skaler stili sunar. Değişmez blok skaleri (|) satır sonlarını yazıldığı gibi korur ve gömülü betikler veya SQL sorguları için idealdir. Katlanmış blok skaleri (>) ardışık satırları boşluklarla birleştirir ve uzun açıklamalar veya paragraflar için iyi çalışır. Her iki stil de değiştiricileri destekler: |- ve >- sondaki satır sonunu kaldırır, |+ ve >+ ise tüm sondaki satır sonlarını korur.

Çapalar ve takma adlar, YAML'ın içerik yeniden kullanım mekanizmasıdır. Bir çapa (&ad) bir düğümü sonraki referans için işaretler ve bir takma ad (*ad) o düğümü belgenin başka bir yerine ekler. Birleştirme anahtarı (<<: *defaults) ile birleştirildiğinde, bu desen paylaşılan ayarları bir kez tanımlayıp birden fazla eşlemeye birleştirmenize olanak tanır. Birçok işin ortak ortam değişkenleri, önbellek kuralları veya dağıtım adımlarını paylaştığı CI/CD yapılandırmalarında özellikle yararlıdır.

← Tum araclara don