UNDERSTANDING YAML
SLS文件的默认渲染器是YAML渲染器。 YAML是一种具有许多强大功能的标记语言。 但是,Salt使用一小部分YAML来映射非常常用的数据结构,例如列表和字典。 YAML渲染器的工作原理是采用YAML数据结构并将其编译为Python数据结构以供Salt使用。
尽管YAML语法起初看起来令人生畏和简洁,但在为SLS文件编写YAML时,只需记住三个非常简单的规则。
相似的资料也可以参考:Understanding YAML
RULE ONE: INDENTATION - 缩进
YAML使用固定缩进方案来表示数据层之间的关系。 Salt要求每个级别的缩进恰好包含两个空格。 不要使用tab
。
RULE TWO: COLONS - 冒号分隔符
Python词典只是键值对。 使用其他语言的用户可能将此数据类型识别为哈希或关联数组。
字典的key
在YAML中表示为由尾部冒号终止的字符串,value
则由冒号后面的字符串表示,用空格分隔:
my_key: my_value
在python中,上面的数据被转译为:
{'my_key': 'my_value'}
还有一种替换的方法, 可以使用下面的形式表达字典的key/value的映射关系:
my_key:
my_value
注意:上面的语法是有效的YAML,但在SLS文件中并不常见,因为大多数情况下,键的值不是单数,而是值的列表。
字典结构可以嵌套使用:
first_level_dict_key:
second_level_dict_key: value_in_second_level_dict
在Python中对应为:
{
'first_level_dict_key': {
'second_level_dict_key': 'value_in_second_level_dict'
}
}
RULE THREE: DASHES - 短划线
为了表示项目列表,使用单个短划线后跟空格,多个项目当它们具有相同级别的缩进时,它们是同一列表的一部分。
- list_value_one
- list_value_two
- list_value_three
列表同样可以是键值对形式的值。 这在Salt中很常见:
my_dictionary:
- list_value_one
- list_value_two
- list_value_three
在Python中,这被转译为:
{'my_dictionary': ['list_value_one', 'list_value_two', 'list_value_three']}
LEARNING MORE
了解有关如何将YAML呈现为Python数据结构的更多信息,一种简单方法是使用在线YAML解析器来查看Python输出。
这个网站提供了一个体验YAML解析的不错选择: http://yaml-online-parser.appspot.com/
TEMPLATING
在SLS文件中默认允许使用Jinja语句和表达式。 请参阅了解Jinja。