Конфігурація YAML (.yaml)

Специфікація Стандарт

YAML Ain't Markup Language (YAML): це домінантний формат серіалізації даних для сучасних DevOps, хмарної інфраструктури (Kubernetes, Docker Compose) та автоматизації CI/CD, який робить акцент на читабельності для людини завдяки чистим відступам пробілами.

Конвертувати з YAML у JSON

Безкоштовний конвертер з YAML у JSON у браузері. Миттєво конвертуйте файли на своєму пристрої.

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли YAML, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли YAML, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

2D 2D 2D 0A

ПОДАННЯ В ASCII: ---\n

Стандартизація: Специфікація YAML 1.2.2

Технічні характеристики

Архітектура контейнераЗручний для людини формат серіалізації даних на основі відступів, що є надмножиною JSON і підтримує якорі та псевдоніми
СтисненняНестиснений текстовий потік
Порядок байтів (Endianness)Текстовий потік UTF-8 / Unicode
Колірні просториНе застосовується (Серіалізація даних)
Канали та структураВідображення (словники ключ-значення), послідовності (списки), скалярні типи (рядки, числа, логічні значення) та якорі (&ref/*ref)
Максимальні розміриНеобмежений розмір документа (підтримує багатодокументні потоки, розділені '---')
ПрозорістьВідсутня
Потокове та прогресивне завантаженняБагатодокументні потоки дозволяють послідовну обробку документ за документом

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

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

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Помилка синтаксичного аналізатора: 'mapping values are not allowed here' або помилка відступів.

Першопричина: Змішування табуляції з пробілами або невідповідність рівнів відступів.

Відновлення: Конвертуйте табуляцію у пробіли та перевірте синтаксис за допомогою форматувальника YAML у File2File.app.

Аналіз безпеки та векторів атак на парсери

Аналізатори 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Кларк Еванс, Ingy döt Net та Орен Бен-Кікі створюють 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 та параметрів програмного забезпечення.

Чи можна використовувати табуляцію у файлах YAML?

Ні. Офіційна специфікація YAML суворо забороняє використання символів табуляції для відступів; ви завжди повинні використовувати пробіли (зазвичай 2 пробіли на рівень).

Як я можу конвертувати YAML у JSON?

Ви можете конвертувати файли YAML у чистий, перевірений JSON в один клік за допомогою File2File.app безпосередньо у своєму веббраузері з повною конфіденційністю.