Що таке YAML і чому пробіли тут мають значення
Якщо ти працюєш з чимось сучасним — Docker Compose, GitHub Actions, Kubernetes, Ansible — ти стикнешся з YAML. Спочатку виглядає просто: ключі, двокрапки, значення. Але потім щось не працює, і ти дві години шукаєш проблему, поки не розумієш: зайвий пробіл у відступі.
YAML (YAML Ain’t Markup Language) — це текстовий формат для даних і конфігурацій. Його головна ідея: бути зручним для людини. JSON теж читабельний, але YAML — ще читабельніший, якщо знати правила.
Основні правила синтаксису
Ключі й значення
name: ITAcademy
port: 8080
debug: false
Просто: ключ, двокрапка, пробіл, значення. Пробіл після двокрапки обов’язковий. name:ITAcademy без пробілу — помилка.
Списки
tags:
- frontend
- backend
- devops
Кожен елемент списку починається з - (дефіс і пробіл).
Вкладені структури
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: postgres:17
environment:
POSTGRES_PASSWORD: secret
Вкладеність визначається відступами пробілами (не табами!). Зазвичай 2 пробіли на рівень.
Багаторядкові тексти
description: >
Це багаторядковий текст,
який буде об'єднаний в один рядок.
long_text: |
Це багаторядковий текст,
який збереже переноси рядків.
> — об’єднує рядки в один. | — зберігає переноси.
Чим YAML кращий JSON
{
"services": {
"web": {
"image": "nginx",
"ports": ["8080:80"]
}
}
}
services:
web:
image: nginx
ports:
- "8080:80"
YAML: не треба лапок для ключів, не надо фігурних дужок, не треба ком між елементами списку, не треба true/false — можна yes/no.
Чим YAML гірший JSON
- Пробіли мають значення. Зайвий пробіл = інший сенс або помилка, і цю помилку важко помітити.
- Немає табів. Тільки пробіли. Якщо редактор вставляє таби — буде плутанина.
- Типи даних можуть здивувати.
yesстаєtrue,noстаєfalse,1.0стає числом,1.0.0стає рядком. Треба бути уважним.
Типові помилки
1. Таби замість пробілів
YAML вимагає пробіли. Крапка. Якщо редактор вставляє таби — налаштуй його.
2. Неправильна кількість пробілів
services:
web: # 4 пробіли
image: # 6 пробілів — все ще дочірній до web, але незрозуміло
Краще фіксувати 2 пробіли на рівень і дотримуватися цього.
3. Забутий пробіл після двокрапки
image:nginx # ❌ Помилка
image: nginx # ✅ Правильно
4. Не екранувати спеціальні символи
title: "Це: важливо" # ✅ Лапки зберігають двокрапку
command: >- # ✅ Багаторядковий блок
nginx
-c /etc/nginx/nginx.conf
Висновок / план дії
YAML — не складний, але вимагає точності. Пробіли мають значення, і це одночасно його сила (читабельність) і слабкість (помилки).
Що зробити:
- Відкрий
docker-compose.ymlабо.github/workflows/test.ymlі прочитай його рядок за рядком. - Зверни увагу на відступи: кожна вкладена структура має більше пробілів.
- Спробуй написати простий YAML-файл і перевірити його через онлайн-валідатор.
- Переконайся, що редактор вставляє пробіли, а не таби.
Якщо ти зможеш читати YAML без підказок — ти розумієш більше конфігурацій, ніж думаєш.