YAML
YAML is a simple data serialization language often used for configuration (e.g. docker and ansible). Information on this page is taken (often word-for-word) from http://docs.ansible.com/ansible/YAMLSyntax.html.
Syntax
All YAML files can optionally begin with ---
and end with ...
to
indicate the start and end of a document. Tab characters are never
allowed as indentation.
Comments
Comments begin with the number sign (#
). They must be separated
from other tokens by white space characters.
Strings
Strings are ordinarily unquoted, but may be enclosed in double-quotes, or single quotes.
There are two ways to write multi-line strings, one preserving
newlines (using the |
character) and one that folds the newlines
(using the >
character), both followed by a newline character.
--- # Newline preservation data: | This will be on one line This will be on another --- # Newline folding data: > These bits of text will all be folded into a single paragraph
Lists
Members of a list are lines beginning at the same indentation level starting with a ~"- ~ (a dash and a space).
drinks: - Water - Lemonade - Snapple - Coke - Pepsi
Can also be abbreviated as
drinks: ['Water', 'Lemonade', 'Snapple', 'Coke', 'Pepsi']
Dictionaries
A dictionary is represented in a simple key: value
form (the
colon must be followed by a space).
ages: john: 24 tom: 12 alice: 28 frank: 39
Abbreviated as
ages: {john: 24, tom: 12, alice: 28, frank: 39}
Anchors and References
Anchors and references allow duplication of content across a
document. An anchor is created with &
, a reference with *
.
companies: - &apple Apple, Incorporated - &samsung SAMSUNG, Incorporated macbook: creator: &apple iphone: creator: &apple galaxy: creator: &samsung
Anchors can also be used to duplicate/inherit properties.
base: &base name: Everyone has this name foo: <<: *base age: 10 bar: <<: *base age: 20