Що таке 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 без підказок — ти розумієш більше конфігурацій, ніж думаєш.
Короткий чеклист
- Створи файл test.yml з кількома ключами і списками.
- Перевір його через YAML-валідатор: python3 -c 'import yaml; yaml.safe_load(open("test.yml"))'.
- Порівняй той самий об'єкт у JSON і YAML — подивися на різницю.
- Відкрий docker-compose.yml або GitHub Actions workflow — спробуй прочитати його без підказок.
Prompt Pack: прочитати і написати YAML
Я бачу YAML-файли в Docker Compose, GitHub Actions і Kubernetes, але не розумію правила формату. Вхідні дані: - для чого потрібен YAML (Docker Compose, CI/CD, конфігурація застосунку); - рівень досвіду з конфігураційними файлами. Поверни результат у форматі: 1. основні правила синтаксису YAML; 2. приклади: ключі, списки, вкладені структури, багаторядкові тексти; 3. типові помилки і як їх уникнути; 4. чим YAML кращий і гірший за JSON.