Конфігурація 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 0AASCII-УЯВЛЕННЯ: ---\n
Стандартизація: Специфікація YAML 1.2.2
Технічні характеристики
| Архітектура контейнера | Зручний для людини формат серіалізації даних на основі відступів, що є надмножиною JSON і підтримує якорі та псевдоніми |
| Стиснення | Нестиснений текстовий потік |
| Порядок байтів (Endianness) | Текстовий потік UTF-8 / Unicode |
| Колірні простори | Не застосовується (Серіалізація даних) |
| Канали та структура | Відображення (словники ключ-значення), послідовності (списки), скалярні типи (рядки, числа, логічні значення) та якорі (&ref/*ref) |
| Максимальні розміри | Необмежений розмір документа (підтримує багатодокументні потоки, розділені '---') |
| Прозорість | Відсутня |
| Потокове та прогресивне завантаження | Багатодокументні потоки дозволяють послідовну обробку документ за документом |
Технічна матриця порівняння: YAML проти конкурентів
| Технічний атрибут | YAML (Поточний) | JSON | TOML | XML |
|---|---|---|---|---|
| Стиль синтаксису | Ієрархія відступів та пробілів | Суворі дужки та лапки | Таблиці та пари ключ=значення | Багатослівні теги відкриття/закриття |
| Підтримка коментарів | Нативна (коментарі через #) | Коментарі заборонені | Нативна (коментарі через #) | <!-- коментарі --> |
| Впровадження в DevOps | Універсальний стандарт (Kubernetes, CI/CD) | Універсальний стандарт API | Конфігурація пакетів Rust/Python | Корпоративна застаріла конфігурація |
| Повторне використання даних | Нативні якорі (&) та псевдоніми (*) | Відсутнє (ручне дублювання) | Відсутнє (ручне дублювання) | Сутності XML |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Помилка синтаксичного аналізатора: 'mapping values are not allowed here' або помилка відступів.
Першопричина: Змішування табуляції з пробілами або невідповідність рівнів відступів.
Відновлення: Конвертуйте табуляцію у пробіли та перевірте синтаксис за допомогою форматувальника YAML у File2File.
Аналіз безпеки та векторів атак на парсери
Аналізатори YAML, які підтримують спеціальні теги типів (як-от 'yaml.load()' у PyYAML), історично дозволяли віддалене виконання коду через довільне створення об'єктів.
Відомі вектори атак
- Довільне виконання коду через небезпечні теги десеріалізації об'єктів (наприклад, '!!python/object/apply').
- Бомби розширення сутностей (еквівалент мільйона сміху з використанням якорів і псевдонімів YAML).
- Вразливості змішаних типів даних через неявний розбір логічних значень і міток часу.
Захисні найкращі практики:
Історичне походження та віхи
Головні переваги та плюси
- Беззаперечний стандарт для сучасної хмарної інфраструктури: використовується повсюдно в маніфестах 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 безпосередньо у своєму веббраузері з повною конфіденційністю.
Пов'язані пари конвертації YAML
Конвертація файлів конфігурації YAML у формат JSON перетворює зрозумілі для людини текстові структури з відступами на суворі об'єкти для веб-додатків, які легко аналізуються машиною.
Конвертація файлів конфігурації JSON у формат YAML перетворює жорсткі програмні структури даних на охайні, зручні для читання документи, які набагато простіше редагувати системним адміністраторам.