YAML конфиг (.yaml)
YAML СтандартYAML Ain't Markup Language (YAML) е доминиращият формат за сериализация на данни за съвременен DevOps, облачна инфраструктура (Kubernetes, Docker Compose) и CI/CD автоматизация, наблягащ на човешката четимост чрез чисто отстъпване с интервали.
Конвертиране от YAML към JSON
Безплатен конвертор от YAML към JSON в браузъра. Конвертирайте файлове незабавно на вашето устройство.
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират YAML файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират YAML файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
2D 2D 2D 0AASCII ПРЕДСТАВЯНЕ: ---\n
Стандартизация: YAML 1.2.2 Specification
Технически спецификации
| Контейнерна архитектура | Удобен за четене формат за сериализация на данни с отстъпи, надмножество на JSON, което поддържа котви и псевдоними |
| Компресия | Некомпресиран текстов поток |
| Поредност на байтовете (Endianness) | Текстов поток в UTF-8 / Unicode |
| Цветови пространства | N/A (Data Serialization) |
| Канали и структура | Съответствия (речници ключ-стойност), последователности (списъци), скаларни типове (низове, числа, булеви стойности) и котви (&ref/*ref) |
| Максимални размери | Размер на документа без фиксирано ограничение (поддържа потоци от няколко документа, разделени с '---') |
| Прозрачност | Няма |
| Поточно предаване и прогресивно зареждане | Потоците от няколко документа позволяват последователна обработка документ по документ |
Техническа сравнителна матрица: YAML спрямо конкуренти
| Технически атрибут | YAML (Текущ) | JSON | TOML | XML |
|---|---|---|---|---|
| Стил на синтаксиса | Йерархия от интервали за отстъп | Строги квадратни скоби и кавички | Таблици и двойки ключ=стойност | Многословни отварящи/затварящи тагове |
| Поддръжка на коментари | Вградена поддръжка (# коментари) | Не са разрешени коментари | Вградена поддръжка (# коментари) | <!-- коментари --> |
| Възприемане в DevOps | Поддръжката зависи от програмата. | Поддръжката зависи от програмата. | Конфигурация на пакети за Rust/Python | Корпоративен стар конфиг |
| Повторно използване на данни | Естествени котви (&) и псевдоними (*) | Няма (ръчно дублиране) | Няма (ръчно дублиране) | XML същности |
Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни
Грешка на парсера: 'mapping values are not allowed here' или грешка с отстъпите.
Първопричина: Смесване на табулатори с интервали или неправилно подравнени нива на отстъпи.
Възстановяване: Конвертирайте табулаторите в интервали и валидирайте синтаксиса с помощта на File2File.app YAML Formatter.
Анализ на сигурността и вектори на атака към парсера
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 и софтуерни настройки.
Мога ли да използвам табулации (tabs) в YAML файлове?
Не. Официалната спецификация на YAML строго забранява използването на знаци за табулация за отстъп; винаги трябва да използвате интервали (обикновено 2 интервала на ниво).
Как мога да конвертирам YAML в JSON?
Можете да конвертирате YAML файлове в чист, валидиран JSON с едно щракване, използвайки File2File.app директно във вашия уеб браузър с пълна поверителност.
Свързани двойки за конвертиране на YAML
Конвертирането на YAML конфигурационни файлове в JSON формат преобразува лесни за четене от хора текстови структури с отстъпи в строги машиночитаеми обекти за уеб приложения.
Конвертирането на JSON конфигурационни файлове в YAML формат трансформира строги програмни структури от данни в изчистени, четими от хора документи, които са много по-лесни за редактиране от системните администратори.