Конфігурація 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, перевіряючи початкову послідовність бінарних байтів:

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

2D 2D 2D 0A

ASCII-УЯВЛЕННЯ: ---\n

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

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

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

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

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

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

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

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

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

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

Аналізатори YAML, які підтримують спеціальні теги типів (як-от 'yaml.load()' у PyYAML), історично дозволяли віддалене виконання коду через довільне створення об'єктів.

Відомі вектори атак

  • Довільне виконання коду через небезпечні теги десеріалізації об'єктів (наприклад, '!!python/object/apply').
  • Бомби розширення сутностей (еквівалент мільйона сміху з використанням якорів і псевдонімів YAML).
  • Вразливості змішаних типів даних через неявний розбір логічних значень і міток часу.

Захисні найкращі практики:

Історичне походження та віхи

2021Опубліковано ревізію YAML 1.2.2, яка вдосконалює сумісність із JSON та визначення формальної граматики.
2009YAML 1.2 стандартизує YAML як сувору надмножину JSON, що означає, що будь-який валідний JSON є валідним YAML.
2001Кларк Еванс, Ingy döt Net та Орен Бен-Кікі створюють 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 та параметрів програмного забезпечення.

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

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

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

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