Парсер YAML

YAML (YAML Ain't Markup Language) — человекочитаемый формат сериализации данных, популярный для конфигурационных файлов. Этот инструмент разбирает YAML с полной поддержкой спецификации 1.2, включая якоря, псевдонимы и многодокументные потоки, и отображает результат в интерактивном древовидном представлении.

Спецификации

Типичные сценарии использования

  • Разбор и валидация манифестов Kubernetes (Deployment, Service, ConfigMap)
  • Чтение файлов Docker Compose и docker-compose.yml
  • Отладка рабочих процессов GitHub Actions, GitLab CI или CircleCI
  • Конвертация плейбуков Ansible в JSON для программной обработки
  • Валидация файлов values чартов Helm

Возможности

  • Полная поддержка спецификации YAML 1.2
  • Обработка якорей (&) и псевдонимов (*) для повторного использования содержимого
  • Разбор многодокументных потоков (разделители ---)
  • Конвертация в JSON, TOML или XML
  • Валидация синтаксиса с сообщениями об ошибках для конкретных строк
  • Интерактивное древовидное представление для вложенных структур

Примеры

Kubernetes Deployment

Попробовать →

Манифест Deployment Kubernetes, определяющий реплицированный pod nginx.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx

Файл Docker Compose, определяющий веб-сервис и сервис базы данных.

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret

Советы

  • YAML чувствителен к отступам. Используйте пробелы, а не табуляцию.
  • Строки не требуют кавычек, если не содержат специальных символов.
  • Используйте якоря (&имя) и псевдонимы (*имя) для избежания повторения содержимого.
  • Многострочные строки могут использовать блочные скаляры | (литеральный) или > (свёрнутый).

Описание Парсер YAML

YAML (YAML Ain't Markup Language) — человекочитаемый формат сериализации данных, широко используемый в DevOps, облачной инфраструктуре и конфигурации приложений. Его синтаксис на основе отступов устраняет визуальный шум скобок и фигурных скобок, делая его предпочтительным форматом для инструментов «инфраструктура как код», конвейеров CI/CD и оркестрации контейнеров.

Основная сила YAML — читаемость. Манифест Deployment Kubernetes, рабочий процесс GitHub Actions или файл Docker Compose в YAML можно понять с первого взгляда. Формат поддерживает скаляры (строки, числа, булевы значения, null, даты), последовательности (массивы) и отображения (пары ключ-значение). Строки обычно не требуют кавычек, многострочное содержимое может использовать литеральные блоки (|) или свёрнутые блоки (>), а якоря (&) с псевдонимами (*) позволяют определить значение один раз и ссылаться на него многократно, сокращая повторения в больших конфигурационных файлах.

YAML 1.2, текущая спецификация, является строгим надмножеством JSON: каждый валидный документ JSON также является валидным YAML. Это означает, что можно смешивать синтаксис YAML и JSON в одном файле. Поддержка многодокументности через разделитель --- позволяет встраивать несколько независимых документов в один файл, что часто встречается в манифестах Kubernetes и шаблонах Helm.

Главная ловушка YAML — чувствительность к пробелам. Табуляция не допускается для отступов (только пробелы), и неправильно выровненный ключ может молча изменить структуру документа. «Проблема Норвегии» — когда значения без кавычек вроде «no», «yes», «on» и «off» интерпретируются как булевы — ещё один печально известный источник ошибок. YAML 1.2 исправил некоторые из этих проблем, но многие парсеры по умолчанию всё ещё используют правила YAML 1.1.

YAML 1.1 определяет широкий набор булевых литералов, включая yes/no, on/off, true/false и их варианты с заглавной буквы. Код страны NO разбирается как булево false, а строка «on» становится true — печально известная «проблема Норвегии». YAML 1.2 ограничивает булевы значения только true и false, но многие популярные парсеры (включая PyYAML) по умолчанию используют правила YAML 1.1. Безопасное решение — всегда заключать в кавычки строки, которые могут быть неправильно интерпретированы. Символы табуляции также строго запрещены для отступов; допускаются только пробелы, и табуляция в отступе вызовет ошибку разбора. Два пробела на уровень — самое распространённое соглашение.

YAML предоставляет два стиля блочных скаляров для многострочных строк. Литеральный блочный скаляр (|) сохраняет переносы строк точно как написано, что идеально для встроенных скриптов или SQL-запросов. Свёрнутый блочный скаляр (>) объединяет последовательные строки пробелами, что хорошо подходит для длинных описаний или абзацев. Оба стиля поддерживают модификаторы: |- и >- удаляют завершающий перенос строки, тогда как |+ и >+ сохраняют все завершающие переносы строк.

Якоря и псевдонимы — механизм YAML для повторного использования содержимого. Якорь (&имя) помечает узел для последующей ссылки, а псевдоним (*имя) вставляет этот узел в другое место документа. В сочетании с ключом слияния (<<: *defaults) этот паттерн позволяет определить общие настройки один раз и объединить их в несколько отображений. Это особенно полезно в конфигурациях CI/CD, где многие задания разделяют общие переменные окружения, правила кэширования или шаги развёртывания.

← Вернуться ко всем инструментам