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Генератор systemd unit-файла
Создание .service и .timer unit-файлов с настройками безопасности. 5 типов сервиса, 5 политик Restart, готовые bash-команды установки.
/generator-systemd-unit-fajlaКонвертер Unix Timestamp ↔ дата
Онлайн конвертер Unix Timestamp в дату и обратно. Текущий Unix-таймстемп, конвертация с учётом часовых поясов России, форматы ISO 8601 и RFC 2822.
/konverter-unix-timestampКалькулятор SLA / стоимости простоя
Расчёт допустимого простоя по SLA (99.9% → минуты в год). Калькулятор стоимости даунтайма и обратный расчёт SLA по фактическому простою.
/kalkulyator-sla-uptimeГенератор nginx конфига
Server-блок nginx с SSL Let’s Encrypt, HTTP/2, gzip, HSTS, CSP, кешированием и rate limit. 4 сценария: proxy, статика, PHP, SPA.
/generator-nginx-konfiga-server-blockКалькулятор контейнеров (Docker)
Расчёты контейнеров: ресурсы, образы, Docker Compose, реестр, оркестрация, стоимость
/container-calculatorCI/CD калькулятор: пайплайн, кэш, тесты, раннеры, деплой
Комплексный CI/CD калькулятор: оптимизация пайплайна (критический путь, параллелизация), кэш сборки (hit ratio, ROI), анализ тестов (flaky, шардирование), артефакты (Docker, npm), раннеры (автоскейлинг) и стратегии деплоя (Blue-Green, Canary, Rolling).
/ci-cd-calculatorОбъединить PDF онлайн — без загрузки на сервер
Склейка PDF в браузере через pdf-lib. До 20 файлов, до 50 МБ каждый. Локально, без отправки на сервер (152-ФЗ).
/obyedinit-pdf-onlajn-besplatnoСжать PDF онлайн — уменьшить размер локально
Сжатие PDF в браузере без потери качества. 3 уровня (object streams, удаление метаданных). До 50 МБ. Через pdf-lib, локально.
/szhat-pdf-onlajn-umenshit-razmerРазделить PDF на страницы — извлечь нужные онлайн
Разделение PDF на страницы локально: каждая страница отдельным файлом, диапазон или группами. Через pdf-lib, без отправки на сервер.
/razdelit-pdf-na-stranicy-onlajnJPG в PDF — конвертер с объединением
Конвертация JPG/PNG в PDF в браузере: до 30 картинок в один документ. Форматы A4/A3/Letter или подгонка под изображение.
/jpg-v-pdf-konverterПовернуть страницы PDF онлайн
Поворот всех или указанных страниц PDF на 90/180/270° за миллисекунды. Lossless. Через pdf-lib, без отправки на сервер.
/povernut-pdf-stranitsy-onlajnВодяной знак на PDF онлайн (кириллица)
Нанесение текстового знака («КОНФИДЕНЦИАЛЬНО», «ЧЕРНОВИК») на все страницы PDF. Поддержка русского текста через Canvas. 4 положения, регулировка прозрачности.
/dobavit-vodyanoj-znak-na-pdfНумерация страниц PDF онлайн
Проставьте номера страниц PDF в браузере: 4 формата, 6 положений, пропуск титульной, кастомный старт. Поддержка кириллицы. Через pdf-lib + Canvas.
/numerovat-stranitsy-pdf-onlajn