Конфігурація YAML (.yaml)
Специфікація СтандартYAML Ain't Markup Language (YAML): це домінантний формат серіалізації даних для сучасних DevOps, хмарної інфраструктури (Kubernetes, Docker Compose) та автоматизації CI/CD, який робить акцент на читабельності для людини завдяки чистим відступам пробілами.
Конвертувати з YAML у JSON
Безкоштовний конвертер з YAML у JSON у браузері. Миттєво конвертуйте файли на своєму пристрої.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли YAML, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли YAML, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
2D 2D 2D 0AПОДАННЯ В ASCII: ---\n
Стандартизація: Специфікація YAML 1.2.2
Технічні характеристики
| Архітектура контейнера | Зручний для людини формат серіалізації даних на основі відступів, що є надмножиною JSON і підтримує якорі та псевдоніми |
| Стиснення | Нестиснений текстовий потік |
| Порядок байтів (Endianness) | Текстовий потік UTF-8 / Unicode |
| Колірні простори | Не застосовується (Серіалізація даних) |
| Канали та структура | Відображення (словники ключ-значення), послідовності (списки), скалярні типи (рядки, числа, логічні значення) та якорі (&ref/*ref) |
| Максимальні розміри | Необмежений розмір документа (підтримує багатодокументні потоки, розділені '---') |
| Прозорість | Відсутня |
| Потокове та прогресивне завантаження | Багатодокументні потоки дозволяють послідовну обробку документ за документом |
Технічна матриця порівняння: YAML проти конкурентів
| Технічний атрибут | YAML (Поточний) | JSON | TOML | XML |
|---|---|---|---|---|
| Стиль синтаксису | Ієрархія відступів і пробілів | Суворі дужки та лапки | Таблиці та пари ключ=значення | Багатослівні теги відкриття/закриття |
| Підтримка коментарів | Вбудована підтримка коментарів (через #) | Коментарі заборонені | Вбудована підтримка коментарів (через #) | <!-- коментарі --> |
| Впровадження в 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) і встановлюйте обмеження глибини розгортання якорів.
Історичне походження та віхи
Основні переваги
- 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 безпосередньо у своєму веббраузері з повною конфіденційністю.
Пов'язані пари конвертації YAML
Перетворення файлів конфігурації YAML на JSON переводить зрозумілі людині текстові структури з відступами у формалізовані об’єкти, які вебзастосунки можуть розбирати.
Перетворення файлів конфігурації JSON на YAML переводить суворо формалізовані структури даних у зрозумілі документи, які системним адміністраторам набагато простіше редагувати.