Jason Hee
Posted on May 18, 2021
Have you ever had to copy and paste duplicate content in a YAML file and wondered if it is possible to DRY that up? As it turns out, YAML allows you to repeat nodes via aliases.
YAML Aliases allow you to assign a name to a value or block of data and recall the assigned data by its name in the YAML file. Aliases should work for any file written in YAML.
Simple Example
hello: &hello 'hello'
greeting:
audience: 'world'
hello: *hello #greeting.hello has the string value of 'hello'
new_greeting:
audience: 'room'
hello: *hello #new_greeting.hello has the string value of 'hello'
Aliasing blocks of data
Besides string or number values, you can alias a block of data as well:
foo:
bar: &bar
qux: 'quxqux'
baz: 'bazbaz'
greeting:
audience: 'world'
bar: *bar #greeting.bar has the same values as foo.bar.
#So greeting.bar.baz is 'bazbaz'
Modifying a section of an alias
You can copy an alias and modify a section of it by using the merge key (<<:):
bar: &bar
qux: 'quxqux'
baz: 'bazbaz'
greeting:
audience: 'world'
bar:
<<: *bar # greeting.bar.qux is 'quxqux'
baz: 'notbaz' # greeting.bar.baz is 'notbaz'
Defining aliases from modified aliases
You can even modify a section of an alias and define that as a new alias:
bar: &bar
qux: 'quxqux'
baz: 'bazbaz'
greeting:
audience: 'world'
bar: &newalias
<<: *bar
baz: 'notbaz'
new_greeting:
audience: 'room'
bar: *newalias #new_greeting.bar.baz is 'notbaz'
YAML specification
Alias nodes are described in the YAML specification here
💖 💪 🙅 🚩
Jason Hee
Posted on May 18, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
kubernetes K8s QuickBites: Creating Secure TLS Certificates for Kubernetes Deployments
August 21, 2024