YAML конфиг (.yaml)

YAML Стандарт

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

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

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

Инспектиране и метаданни

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

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

100% поверително конвертиране в браузъра - файловете никога не напускат вашето устройство

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

Байтов подпис на хедъра (Magic Bytes)

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

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

2D 2D 2D 0A

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

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

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

Контейнерна архитектураIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
КомпресияUncompressed text stream
Поредност на байтовете (Endianness)UTF-8 / Unicode text stream
Цветови пространстваN/A (Data Serialization)
Канали и структураMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Максимални размериUnbounded document size (supports multi-document streams separated by '---')
ПрозрачностNone
Стрийминг и прогресивно зарежданеMulti-document streams allow sequential document-by-document processing

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

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

Често срещани режими на повреда и ръководство за хекс възстановяване

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

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

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

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

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

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

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

Защитни добри практики:

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

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

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

  • Безспорният стандарт за съвременна облачна инфраструктура: използван навсякъде в манифести на Kubernetes, Docker Compose и GitHub Actions.
  • Чист, четим синтаксис: елиминира бъркотията от фигурни скоби, квадратни скоби и кавички чрез интуитивно отстъпване.
  • Поддържа препратки и котва (&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 директно във вашия уеб браузър с пълна поверителност.