YAML валидатор
и форматтер
Что такое YAML
YAML (YAML Ain't Markup Language) — это человекочитаемый формат сериализации данных, созданный в 2001 году. Формат стал стандартом де-факто для конфигурационных файлов в DevOps, облачной инфраструктуре и CI/CD-пайплайнах. В отличие от XML и JSON, YAML использует отступы для обозначения структуры, что делает его компактнее и удобнее для чтения и редактирования вручную.
YAML: простота и читаемость
YAML использует отступы пробелами для обозначения вложенности, двоеточия для пар ключ-значение и дефисы для списков. Никаких фигурных скобок, кавычек и запятых — только чистая, читаемая структура. Это делает YAML идеальным для конфигураций, которые часто редактируют вручную.
YAML vs JSON
JSON — подмножество YAML. Любой валидный JSON является валидным YAML, но не наоборот. JSON компактнее для машин и используется в API, а YAML — для конфигураций. JSON требует кавычки для ключей и строк, YAML — нет. JSON не поддерживает комментарии, YAML поддерживает через символ #.
YAML vs TOML
TOML (используется в Cargo.toml, pyproject.toml) — более строгий формат с явными типами данных. YAML гибче и поддерживает сложные структуры: якоря, псевдонимы, многодокументные файлы. TOML лучше для плоских конфигов, YAML — для глубоко вложенных структур вроде манифестов Kubernetes.
История YAML
YAML был создан в 2001 году Кларком Эвансом, Инги д'ет Нетом и Ореном Бен-Кики. Изначально аббревиатура расшифровывалась как «Yet Another Markup Language», но позже была изменена на рекурсивный акроним «YAML Ain't Markup Language», чтобы подчеркнуть: YAML — это формат данных, а не разметки.
Спецификация YAML 1.0 вышла в январе 2004 года. Текущая версия — YAML 1.2 (2009) — совместима с JSON и является надмножеством этого формата. YAML широко используется в экосистеме DevOps благодаря проектам Ruby on Rails, Ansible, Docker и Kubernetes.
Где используется YAML
YAML стал стандартом конфигурации в облачных технологиях, CI/CD и инфраструктуре как коде (IaC). Вот основные области применения.
Kubernetes
Манифесты Deployments, Services, ConfigMaps, Ingress, Helm Charts — вся конфигурация кластера описывается в YAML. Ошибка в отступе может привести к падению деплоя.
Ansible
Плейбуки, роли, инвентори и переменные — Ansible полностью построен на YAML. Валидация плейбука перед запуском экономит часы отладки на продакшене.
Docker Compose
Файлы docker-compose.yml описывают многоконтейнерные приложения: сервисы, сети, volumes, зависимости. Невалидный YAML — контейнеры не поднимутся.
GitHub Actions
Workflows в .github/workflows/*.yml определяют CI/CD-пайплайны: сборку, тесты, деплой. Строгий синтаксис — ошибка в YAML блокирует весь пайплайн.
GitLab CI/CD
Файл .gitlab-ci.yml описывает стадии, джобы, артефакты и окружения. GitLab парсит YAML строго — невалидный файл отключает весь CI/CD проекта.
Spring Boot
Конфигурация application.yml в Java/Kotlin-приложениях. Профили (dev, prod, test) в одном файле, иерархическая структура настроек сервера, БД, кеша.
Синтаксис YAML/ справочник
Основные конструкции YAML, которые используются в повседневной работе с конфигурационными файлами Kubernetes, Ansible, Docker Compose и CI/CD.
Скаляры (простые значения)
Строки, числа, булевы значения и null. Строки обычно не требуют кавычек, но кавычки нужны, если значение содержит спецсимволы (: # [ ] , & * ? | - < > = ! % @ \).
name: my-app # строка
port: 8080 # целое число
ratio: 3.14 # дробное число
enabled: true # булево (true/false/yes/no)
empty: null # пустое значение (null/~)
quoted: "value: here" # кавычки нужны из-за двоеточияСписки (последовательности)
Элементы списка начинаются с дефиса и пробела (- ). Списки могут быть вложенными и содержать объекты. Inline-форма: [a, b, c].
# Блочный стиль
fruits:
- apple
- banana
- cherry
# Inline-стиль (flow)
colors: [red, green, blue]
# Список объектов
users:
- name: Ivan
role: admin
- name: Maria
role: editorСловари (маппинги)
Пары ключ-значение через двоеточие и пробел. Вложенные словари создаются отступами. Inline-форма: {key: val}.
# Вложенный словарь
database:
host: localhost
port: 5432
credentials:
username: admin
password: secret
# Inline-стиль
limits: {cpu: "500m", memory: "256Mi"}Многострочные строки
Литеральный блок (|) сохраняет переносы строк. Свёрнутый блок (>) заменяет переносы на пробелы. Модификаторы: + (сохранить trailing newline), - (убрать trailing newline).
# Literal block (|) — переносы сохраняются
description: |
Первая строка
Вторая строка
Третья строка
# Folded block (>) — переносы → пробелы
summary: >
Это длинное описание,
которое склеится
в одну строку.Якоря и псевдонимы (& / *)
Якорь (&name) сохраняет блок, псевдоним (*name) ссылается на него. <<: *name — merge key для объединения словарей. Помогает избежать дублирования конфигураций.
# Определяем якорь
defaults: &defaults
adapter: postgres
host: localhost
pool: 5
# Используем псевдоним
development:
<<: *defaults
database: dev_db
production:
<<: *defaults
database: prod_db
pool: 25Частые ошибки в YAML
YAML чувствителен к отступам и форматированию. Вот наиболее распространённые ошибки, которые ловит наш валидатор.
Табуляция вместо пробелов
YAML запрещает символы табуляции. Настройте редактор на замену Tab пробелами (2 или 4).
server:\n\thost: localhostserver:\n host: localhostОтсутствие пробела после двоеточия
После двоеточия обязателен пробел (или конец строки для вложенных структур).
name:valuename: valueНепоследовательные отступы
Элементы одного уровня должны иметь одинаковый отступ. Смешивание 2 и 3 пробелов — ошибка.
server:\n host: x\n port: 80server:\n host: x\n port: 80Спецсимволы в строках без кавычек
Двоеточие с пробелом внутри значения воспринимается как новая пара ключ-значение. Оберните в кавычки.
message: Error: not foundmessage: "Error: not found"Дублирование ключей
Дублирующие ключи на одном уровне — поведение не определено. Второе значение может перезаписать первое.
name: first\nname: secondfirst_name: first\nlast_name: secondЧисла и булевы как строки
Кавычки превращают числа и булевы в строки. Kubernetes и Ansible могут обработать их неправильно.
port: "8080"\nenabled: "true"port: 8080\nenabled: trueСоветы по работе с YAML
Практические рекомендации от DevOps-инженеров для безопасной и эффективной работы с YAML-конфигурациями.
1Используйте линтер в CI/CD
Добавьте yamllint в пайплайн CI/CD. Он проверяет не только синтаксис, но и стилистику: длину строк, отступы, пустые строки. Конфигурация .yamllint.yml позволяет настроить правила под проект. Это предотвращает мёрж некорректных конфигов в main-ветку.
2Настройте EditorConfig
Создайте .editorconfig с правилами для *.yml и *.yaml: indent_style = space, indent_size = 2, insert_final_newline = true. Это гарантирует единообразие отступов у всех участников команды, независимо от используемого редактора.
3Избегайте yes/no и on/off
В YAML 1.1 значения yes, no, on, off, y, n автоматически преобразуются в булевы true/false. Это частая причина багов: country: NO (Норвегия) становится false. Используйте true/false для булевых и кавычки для строк, похожих на булевы.
4Разделяйте окружения файлами
Вместо одного файла с якорями и merge keys для dev/stage/prod используйте отдельные файлы: values-dev.yaml, values-prod.yaml. Helm и Kustomize поддерживают наложение конфигураций. Это упрощает ревью и снижает риск случайного деплоя продакшн-настроек в dev.
5Всегда оборачивайте версии в кавычки
Значение version: 1.0 парсится как число 1 (не «1.0»). Аналогично version: 3.10 становится 3.1. Всегда пишите version: "1.0" или version: "3.10" для сохранения точного значения. Это особенно критично для Docker-тегов и Helm Charts.
6Валидируйте перед деплоем
Помимо синтаксической проверки, используйте схемную валидацию: kubectl --dry-run=client для Kubernetes, ansible-lint для Ansible, docker compose config для Docker Compose. Это проверяет не только формат YAML, но и корректность конкретных полей.
Как пользоваться валидатором
Пошаговая инструкция для быстрой проверки и форматирования YAML-файлов.
Вставьте YAML
Скопируйте содержимое YAML-файла в текстовое поле слева. Или нажмите кнопку «Пример» для загрузки тестовой конфигурации Kubernetes.
Выберите режим
Валидация проверит синтаксис и покажет ошибки. Форматирование выровняет отступы. Конвертация переведёт YAML в JSON или обратно.
Настройте отступ
Выберите 2 пробела (стандарт Kubernetes, Ansible) или 4 пробела (стандарт Python, Spring Boot). Настройка влияет на форматирование и конвертацию.
Скопируйте результат
Нажмите «Копировать» для копирования результата в буфер обмена. Отформатированный YAML или сконвертированный JSON готов к использованию.
Часто задаваемые вопросы
Был ли этот калькулятор полезен?
Инструмент справочный — не заменяет эксперта
Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.
Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.
Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.
Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.
Похожие калькуляторы
Калькулятор размера Docker-образа
Оценка размера Docker-образа по базовому образу и зависимостям. Сравнение base images, советы по оптимизации и multi-stage сборке.
/razmer-docker-obrazaГенератор Cron-выражений
Визуальный конструктор cron-расписаний с переводом на русский язык. Создайте cron-выражение для планировщика задач Linux, настройте расписание и посмотрите ближайшие запуски.
/generator-cronКонвертер Unix Timestamp ↔ дата
Онлайн конвертер Unix Timestamp в дату и обратно. Текущий Unix-таймстемп, конвертация с учётом часовых поясов России, форматы ISO 8601 и RFC 2822.
/konverter-unix-timestampКалькулятор SLA / стоимости простоя
Расчёт допустимого простоя по SLA (99.9% → минуты в год). Калькулятор стоимости даунтайма и обратный расчёт SLA по фактическому простою.
/kalkulyator-sla-uptimeКалькулятор контейнеров (Docker)
Расчёты контейнеров: ресурсы, образы, Docker Compose, реестр, оркестрация, стоимость
/container-calculatorCI/CD калькулятор: пайплайн, кэш, тесты, раннеры, деплой
Комплексный CI/CD калькулятор: оптимизация пайплайна (критический путь, параллелизация), кэш сборки (hit ratio, ROI), анализ тестов (flaky, шардирование), артефакты (Docker, npm), раннеры (автоскейлинг) и стратегии деплоя (Blue-Green, Canary, Rolling).
/ci-cd-calculatorКалькулятор микросервисной архитектуры
Расчёты микросервисов: ресурсы, сеть, надёжность, API Gateway, очереди, стоимость
/microservices-calculatorDevOps калькулятор: DORA-метрики, SLA, CI/CD пайплайн, мониторинг
Комплексный DevOps калькулятор. DORA-метрики (deployment frequency, lead time, MTTR, change failure rate), расчёт SLA и доступности (uptime 99.9–99.999%), размер инфраструктуры (CPU/RAM/диск), мониторинг и алертинг, оптимизация облачных затрат (Reserved vs Spot), анализ CI/CD пайплайна.
/devops-calculatorJSON форматтер и валидатор
Онлайн форматирование, валидация и минификация JSON с русским интерфейсом. Подсветка синтаксиса, древовидный просмотр, статистика и проверка ошибок.
/json-formatterКалькулятор технического долга: объём, SQALE, рефакторинг
Комплексный калькулятор технического долга: оценка объёма в часах и рублях, расчёт процентной ставки (стоимость бездействия), матрица приоритизации (impact vs effort), метрики качества кода (цикломатическая сложность, дупликация, покрытие тестами), план рефакторинга по спринтам, SQALE рейтинг A-E.
/technical-debt-calculatorSQL форматтер (beautifier)
Онлайн форматирование SQL-запросов с подсветкой синтаксиса. Поддержка MySQL, PostgreSQL, MS SQL. Форматирование, минификация и подсветка SQL.
/sql-formatterГенератор Cubic Bezier (CSS transition)
Интерактивный генератор кривых Безье для CSS анимаций. Визуальная настройка плавности переходов, пресеты (ease, linear) и копирование кода.
/cubic-bezierRegex-тестер с русской документацией
Онлайн тестирование регулярных выражений с подсветкой совпадений, захватом групп и русскоязычной документацией. Шпаргалка по синтаксису regex.
/regex-tester-ruКалькулятор код-ревью: время, размер PR, дефекты, нагрузка
Комплексный калькулятор код-ревью: оценка времени проверки кода, анализ размера PR (XS/S/M/L/XL), покрытие ревью и bus factor, плотность дефектов и escape rate, нагрузка команды ревьюеров, метрики качества (churn, rework, first-pass yield).
/code-review-calculatorКалькулятор теории цвета: гармония, конвертер, палитры, смешивание, дальтонизм
Комплексный инструмент для работы с цветом: цветовые гармонии (комплементарная, аналогичная, триадная, тетрадная), конвертер HEX/RGB/HSL/HSV/CMYK, генератор палитр (монохроматическая, shades, tints, tones), смешивание цветов (аддитивное/субтрактивное), симулятор дальтонизма и анализ цветовой температуры.
/color-theory-calculator