Що таке 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

Типові помилки

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 — не складний, але вимагає точності. Пробіли мають значення, і це одночасно його сила (читабельність) і слабкість (помилки).

Що зробити:

  1. Відкрий docker-compose.yml або .github/workflows/test.yml і прочитай його рядок за рядком.
  2. Зверни увагу на відступи: кожна вкладена структура має більше пробілів.
  3. Спробуй написати простий YAML-файл і перевірити його через онлайн-валідатор.
  4. Переконайся, що редактор вставляє пробіли, а не таби.

Якщо ти зможеш читати YAML без підказок — ти розумієш більше конфігурацій, ніж думаєш.