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 по начальной двоичной последовательности байтов:

HEX-СИГНАТУРА (СМЕЩЕНИЕ 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

Типичные режимы повреждения и руководство по восстановлению в HEX

Ошибка синтаксического анализа: 'mapping values are not allowed here' или ошибка отступов.

Первопричина: Смешивание табуляции с пробелами или несогласованные уровни отступов.

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

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

Анализаторы 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Кларк Эванс, Инги дёй Нет и Орен Бен-Кики создают YAML как удобную для человека альтернативу XML.

Ключевые преимущества и плюсы

  • Бесспорный стандарт для современной облачной инфраструктуры: универсально используется в манифестах Kubernetes, Docker Compose и GitHub Actions.
  • Чистый, удобочитаемый синтаксис: устраняет загромождение фигурными скобками, квадратными скобками и кавычками благодаря интуитивно понятным отступам.
  • Поддерживает ссылки и якоря (&anchor / *anchor) для повторного использования повторяющихся блоков конфигурации без дублирования.

Технические ограничения и минусы

  • Чувствительность к пробелам: случайная табуляция или один лишний пробел могут нарушить иерархию документа или привести к ошибкам синтаксического анализа.
  • Печально известные ошибки приведения типов: незакавыченные слова вроде 'no', 'on', 'yes' или коды стран ('NO' для Норвегии) могут молча превратиться в булевы значения.
  • Существенно более медленная скорость синтаксического анализа по сравнению с бинарными форматами или строгим JSON.

Интересные технические факты

  • YAML изначально расшифровывался как 'Yet Another Markup Language' (Еще один язык разметки), но был шутливо переименован в рекурсивную аббревиатуру 'YAML Ain't Markup Language' (YAML - это не язык разметки), чтобы подчеркнуть назначение для сериализации данных.
  • «Норвежская проблема» - это известная программная ошибка, при которой код страны 'NO' в файле YAML распознавался как логическое значение 'false'.
  • Каждый действительный файл JSON в мире одновременно является на 100% действительным файлом YAML.

Часто задаваемые технические вопросы

Для чего используется YAML?

YAML является основным языком конфигурации для облачных вычислений, развертывания кластеров Kubernetes, файлов Docker Compose, рабочих процессов GitHub Actions и настроек программного обеспечения.

Можно ли использовать табуляцию в файлах YAML?

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

Как конвертировать YAML в JSON?

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