YAML конфиг (.yaml)

YAML Стандарт

YAML Ain't Markup Language (YAML) е доминиращият формат за сериализация на данни за съвременен DevOps, облачна инфраструктура (Kubernetes, Docker Compose) и CI/CD автоматизация, наблягащ на човешката четимост чрез чисто отстъпване с интервали.

Конвертиране от YAML към JSON

Безплатен конвертор от YAML към JSON в браузъра. Конвертирайте файлове незабавно на вашето устройство.

Проверка и метаданни

Операционните системи и файловите анализатори идентифицират YAML файлове чрез проверка на началната двоична байтова последователност:

Изберете или пуснете файлове тук

Поверително - файловете никога не напускат устройството ви

или поставете Ctrl+V
Гаранция за поверителност с нулево мрежово предаване: 0 байта са качени на външни сървъри. Цялата обработка се извършва локално в пясъчниците на вашия браузър.

Байтов подпис на заглавката (сигнатурни байтове)

Операционните системи и файловите анализатори идентифицират YAML файлове чрез проверка на началната двоична байтова последователност:

HEX ПОДПИС (ОФСЕТ 0):

2D 2D 2D 0A

ASCII ПРЕДСТАВЯНЕ: ---\n

Стандартизация: YAML 1.2.2 Specification

Технически спецификации

Контейнерна архитектураУдобен за четене формат за сериализация на данни с отстъпи, надмножество на JSON, което поддържа котви и псевдоними
КомпресияНекомпресиран текстов поток
Поредност на байтовете (Endianness)Текстов поток в UTF-8 / Unicode
Цветови пространстваN/A (Data Serialization)
Канали и структураСъответствия (речници ключ-стойност), последователности (списъци), скаларни типове (низове, числа, булеви стойности) и котви (&ref/*ref)
Максимални размериРазмер на документа без фиксирано ограничение (поддържа потоци от няколко документа, разделени с '---')
ПрозрачностНяма
Поточно предаване и прогресивно зарежданеПотоците от няколко документа позволяват последователна обработка документ по документ

Техническа сравнителна матрица: YAML спрямо конкуренти

Технически атрибутYAML (Текущ)JSONTOMLXML
Стил на синтаксисаЙерархия от интервали за отстъпСтроги квадратни скоби и кавичкиТаблици и двойки ключ=стойностМногословни отварящи/затварящи тагове
Поддръжка на коментариВградена поддръжка (# коментари)Не са разрешени коментариВградена поддръжка (# коментари)<!-- коментари -->
Възприемане в DevOpsПоддръжката зависи от програмата.Поддръжката зависи от програмата.Конфигурация на пакети за Rust/PythonКорпоративен стар конфиг
Повторно използване на данниЕстествени котви (&) и псевдоними (*)Няма (ръчно дублиране)Няма (ръчно дублиране)XML същности

Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни

Грешка на парсера: 'mapping values are not allowed here' или грешка с отстъпите.

Първопричина: Смесване на табулатори с интервали или неправилно подравнени нива на отстъпи.

Възстановяване: Конвертирайте табулаторите в интервали и валидирайте синтаксиса с помощта на File2File.app YAML Formatter.

Анализ на сигурността и вектори на атака към парсера

YAML парсерите, които поддържат тагове за потребителски типове (като 'yaml.load()' на PyYAML), исторически позволяват изпълнение на отдалечен код чрез произволно инстанциране на обекти.

Известни вектори на атака

  • Изпълнение на произволен код чрез тагове за десериализация на небезопасни обекти (напр. '!!python/object/apply').
  • Бомби с разширяване на обекти (еквивалент на милиард усмивки, използващ YAML котви и псевдоними).
  • Уязвимости поради объркване на типовете заради неявно парсиране на булеви стойности и времеви отметки.

Най-добри практики за защита: Винаги използвайте безопасни YAML парсери ('yaml.safe_load()' в Python) и наложете ограничения на дълбочината на разширяване на котвите.

Исторически произход и етапи

2021Публикувана е ревизия YAML 1.2.2, усъвършенстваща съвместимостта с JSON и формулирането на граматичните дефиниции.
2009YAML 1.2 стандартизира YAML като строго надмножество на JSON, което означава, че всеки валиден JSON е валиден YAML.
2001Кларк Еванс, Инги дьо Нет и Орен Бен-Кики създават YAML като удобна за хората алтернатива на XML.

Основни предимства

  • YAML е често използван в инфраструктурни инструменти, но поддръжката и поведението зависят от реализацията.
  • Чист, четим синтаксис: елиминира бъркотията от фигурни скоби, квадратни скоби и кавички чрез интуитивно отстъпване.
  • Поддържа препратки и котви (&anchor / *anchor) за повторно използване на повтарящи се конфигурационни блокове без дублиране.

Технически ограничения и минуси

  • Чувствителен към интервалите: случаен табулатор или един допълнителен интервал може да наруши йерархията на документа или да причини грешки при парсиране.
  • Известни грешки при принудително преобразуване на типове: думи без кавички като 'no', 'on', 'yes' или кодове на държави ('NO' за Норвегия) могат незабелязано да се превърнат в булеви стойности.
  • Значително по-бавна скорост на парсиране в сравнение с двоични формати или строг JSON.

Интересни технически факти

  • Първоначално YAML означаваше 'Yet Another Markup Language', но беше преименуван на шега на рекурсивния акроним 'YAML Ain't Markup Language', за да се наблегне на сериализацията на данни.
  • „Проблемът с Норвегия" е известен програмен бъг, при който кодът на държавата 'NO' в YAML файл е бил разпознат от парсера като булевата стойност 'false'.
  • Всеки валиден JSON файл в света е едновременно и 100% валиден YAML файл.

Често задавани технически въпроси

За какво се използва YAML?

YAML е основният конфигурационен език за облачни изчисления, разгръщане на клъстери Kubernetes, файлове Docker Compose, работни потоци на GitHub Actions и софтуерни настройки.

Мога ли да използвам табулации (tabs) в YAML файлове?

Не. Официалната спецификация на YAML строго забранява използването на знаци за табулация за отстъп; винаги трябва да използвате интервали (обикновено 2 интервала на ниво).

Как мога да конвертирам YAML в JSON?

Можете да конвертирате YAML файлове в чист, валидиран JSON с едно щракване, използвайки File2File.app директно във вашия уеб браузър с пълна поверителност.