The default renderer for SLS files is the YAML renderer. YAML is a markup language with many powerful features. However, Salt uses a small subset of YAML that maps over very commonly used data structures, like lists and dictionaries. It is the job of the YAML renderer to take the YAML data structure and compile it into a Python data structure for use by Salt.
Though YAML syntax may seem daunting and terse at first, there are only three very simple rules to remember when writing YAML for SLS files.
YAML uses a fixed indentation scheme to represent relationships between data layers. Salt requires that the indentation for each level consists of exactly two spaces. Do not use tabs.
Python dictionaries are, of course, simply key-value pairs. Users from other languages may recognize this data type as hashes or associative arrays.
Dictionary keys are represented in YAML as strings terminated by a trailing colon. Values are represented by either a string following the colon, separated by a space:
my_key: my_value
In Python, the above maps to:
{"my_key": "my_value"}
Dictionaries can be nested:
first_level_dict_key:
second_level_dict_key: value_in_second_level_dict
And in Python:
{"first_level_dict_key": {"second_level_dict_key": "value_in_second_level_dict"}}
To represent lists of items, a single dash followed by a space is used. Multiple items are a part of the same list as a function of their having the same level of indentation.
- list_value_one
- list_value_two
- list_value_three
Lists can be the value of a key-value pair. This is quite common in Salt:
my_dictionary:
- list_value_one
- list_value_two
- list_value_three
YAML Renderer for Salt
For YAML usage information see Understanding YAML.
salt.renderers.yaml.
get_yaml_loader
(argline)¶Return the ordered dict yaml loader
salt.renderers.yaml.
render
(yaml_data, saltenv='base', sls='', argline='', **kws)¶Accepts YAML as a string or as a file object and runs it through the YAML parser.
A Python data structure