📜

Essential Guide to YAML Language

May 21, 2025

YAML Tutorial Lecture Notes

Introduction to YAML

  • YAML stands for 'YAML Ain't Markup Language'.
  • It is a serialization language, similar to XML and JSON.
  • Used for configuration files in DevOps tools like Docker, Kubernetes, Ansible, Prometheus, etc.
  • Known for being human-readable and intuitive.

Why YAML?

  • YAML is popular due to its readability and intuitive design.
  • Unlike XML and JSON, YAML does not use special characters for data structures.
  • Data structures in YAML are defined through line separations and spaces (indentation).

YAML Syntax Basics

Key-Value Pairs

  • Simple structure of key: value.
  • Strings do not need quotes unless they contain special characters.
  • Comments start with #.

Data Types

  • Supports strings, numbers, and booleans.
  • Booleans can be expressed as true/false, yes/no, and on/off.

Objects and Indentation

  • Objects are created by grouping key-value pairs.
  • Indentation must be consistent within objects.
  • Validators can help ensure correct indentation.

Lists

  • Lists are denoted by - for each item.
  • Can contain objects or simple values.
  • Lists of simple values can also use square brackets [ ].

Multi-Line Strings

  • Use | to keep line breaks in multi-line strings.
  • Use > to fold new lines into spaces for long strings.

Example Use Cases

Kubernetes Configuration

  • YAML is used for defining configurations such as pods.
  • Contains metadata, specifications, containers, ports, etc.
  • Lists and objects are common in Kubernetes YAML files.

Multi-Component Files

  • Separate multiple components in a single YAML file using ---.

Use in Helm and Ansible

  • Use placeholders with {{ }} for templating.
  • Used in tools like Helm for Kubernetes.

Environment Variables

  • Access using $ syntax within YAML files.

Tools and Validation

  • Online validators can ensure proper YAML formatting.
  • YAML can be converted to/from JSON.

Conclusion

  • YAML's human-readability makes it a preferable choice for configuration files.
  • It is widely used across various DevOps tools and applications.