YAML
YAML Ain't Markup Language
- Okunuşu
- yemıl
Kısaca
YAML, parantez yerine girinti kullanan, insanın okuyabileceği bir veri biçimidir; DevOps araçlarında ve CI/CD pipeline'larında yapılandırma için yaygındır.
YAML nedir?
YAML, ayarlar, listeler ve iç içe nesneler gibi yapılandırılmış verileri insanların kolayca okuyup düzenleyebileceği biçimde yazmaya yarayan bir metin biçimidir. Dosyalar .yaml ya da .yml uzantısını kullanır. Ad, YAML Ain't Markup Language ifadesinin özyinelemeli bir kısaltmasıdır ve belgeler için değil veriler için tasarlandığını vurgulamak üzere seçilmiştir; başlangıçta Yet Another Markup Language anlamına geliyordu.
YAML yapıyı göstermek için boşluklarla girinti kullanır; bu yüzden süslü parantez ya da kapanış etiketi yoktur ve sekme karakterlerine izin verilmez. Bir key: value çifti bir alan tanımlar, - ile başlayan bir satır bir liste öğesi tanımlar ve satırları bir anahtarın altında girintilemek onları o anahtarın içine yerleştirir. Yorumlar # ile başlar ve tek bir dosya --- ile ayrılmış birden çok belge barındırabilir.
YAML'ı DevOps'ta neredeyse her yerde bulursunuz: Kubernetes manifest'leri, Docker Compose dosyaları, CI/CD pipeline tanımları ve OpenAPI biçiminde yazılmış API açıklamaları. Onu düzgünce girintilenmiş bir taslak gibi düşünün; hangi ayrıntının hangi başlığa ait olduğunu yalnızca girinti söyler.
YAML sıklıkla JSON ile karşılaştırılır. YAML 1.2, JSON'un bir üst kümesi olarak tasarlanmıştır; bu yüzden geçerli hemen her JSON belgesi aynı zamanda geçerli bir YAML'dır, ancak YAML yorumlar ve daha az kalabalık bir sözdizimi ekler. Ödünleşim, esnekliğinin sizi şaşırtabilmesidir: yanlış bir girinti anlamı sessizce değiştirir ve tırnaksız no ya da on gibi değerler, eski YAML 1.1 kurallarını izleyen ayrıştırıcılar tarafından boolean olarak okunabilir; bu yüzden şüpheye düştüğünüzde string'leri tırnak içine alın.
Önemli noktalar
- YAML, yapılandırılmış veri ve yapılandırma için insan tarafından okunabilir bir biçimdir.
- Yapıyı boşluklarla girinti tanımlar; sekmelere izin verilmez.
- JSON'un aksine
#ile yorumları destekler. - YAML 1.2, JSON'un üst kümesidir; bu yüzden JSON'un çoğu geçerli bir YAML'dır.
- Beklenmedik tür dönüşümlerinden kaçınmak için
no,yesya daongibi belirsiz değerleri tırnak içine alın.
Örnek
# A simple service configuration
name: web-app
version: 2
debug: false
server:
host: 0.0.0.0
port: 8080
# A list of allowed origins
allowedOrigins:
- https://example.com
- https://admin.example.comSık sorulan sorular
.yaml ile .yml arasındaki fark nedir?
İçerik açısından fark yoktur; her iki uzantı da bir YAML dosyası anlamına gelir. Resmi öneri .yaml'dır, ancak bazı eski sistemler dosya uzantılarını üç karakterle sınırladığı için .yml de yaygındır.
YAML, JSON'dan daha mı iyidir?
Hiçbiri kesin olarak daha iyi değildir. YAML insanlar için yazması daha kolaydır ve yorumları destekler, bu da onu yapılandırma için popüler kılar; JSON ise daha basit, daha katı ve ayrıştırması daha hızlıdır, bu da onu API'ler için olağan seçim yapar.
YAML'da neden girinti hataları alıyorum?
Yapıyı girinti tanımladığı için sekme ile boşlukları karıştırmak ya da tek bir satırı yanlış hizalamak anlamı bozar veya değiştirir. Yalnızca boşluk kullanın, girintiyi tutarlı tutun ve hataları erken yakalamak için bir YAML linter'ı ya da doğrulayıcısı çalıştırın.
İlgili sayfalar
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- DockerDevOps ve Bulut, s. 15Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
- Kod Olarak AltyapıDevOps ve Bulut, s. 27Kod olarak altyapı, sunucuları, ağları ve diğer altyapıyı araçların otomatik uyguladığı, sürüm kontrolündeki dosyalarda tanımlama pratiğidir.
- SerileştirmeBackend ve API'ler, s. 42Serileştirme, bellekteki veri yapılarını JSON ya da bayt gibi bir biçime dönüştürme işlemidir; böylece veriler saklanabilir veya ağ üzerinden gönderilebilir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin