Introduction: Why YAML Still Matters
YAML Ain't Markup Language — YAML — is widely used for configuration files in DevOps and platform engineering. From Docker Compose to Kubernetes manifests, YAML’s human-readable syntax makes it a favorite for managing complex systems.
Its simplicity can be deceptive; it supports highly complex data structures. Let’s look at why YAML is still relevant even in a JSON-heavy world.
YAML Basics: Syntax Without the Noise
Indentation and Structure
YAML uses spaces for indentation to define hierarchy instead of braces or brackets, making it more readable but error-prone if indentation is inconsistent.
- Use only spaces (no tabs).
- Indentation represents nesting.
Example:
version: "3.8"
services:
web:
image: nginx
ports:
- "80:80"
Scalars, Lists, and Maps
Scalars: strings, numbers, booleans.
name: app
replicas: 3
debug: true
Lists:
tags:
- fast
- secure
- stable
Maps:
image:
name: nginx
tag: latest
YAML in the Real World
Docker Compose Files
Docker Compose uses YAML for multi-container app definitions.
version: "3"
services:
db:
image: postgres:13
app:
build: .
depends_on:
- db
Kubernetes Manifests
Kubernetes manifests define desired deployment states.
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.21
YAML vs JSON: Picking the Right Tool
- YAML is easier for humans to read and allows comments and multi-line strings.
- JSON is better for APIs and situations where parsing speed matters.
Common Pitfalls and How to Avoid Them
- Indentation errors — be consistent (2 spaces is common).
- Quoting issues — "yes" vs yes can change data type.
- Tabs are invalid in YAML.
Pro Tips for Smooth YAML Workflows
- Use linters and validators like yamllint.
- Reuse code with anchors and aliases.
- Break large configs into smaller files for maintainability.
Conclusion: YAML in Your DevOps Stack
YAML’s readability and flexibility make it ideal for human-maintained configuration files. While JSON is great for machine interactions, YAML shines in deployment configs and DevOps workflows.