什么是YAML
YAML是YAML Ain‘t Markup Language 的首字母缩写,和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU和UNIX说不,YAML说不的对象是XML。YAML的语法很简单,结构通过空格来展示,项目使用“-”来代表,键值对使用“:”分割。毫不夸张地说,这几乎就是YAML的所有语法了,你是否注意到Salt的Master和Minion的配置文件均是使用的YAML语法呢。
规则一:缩进
YAML使用一个固定的缩进风格表示数据层级结构关系。SaltStack需要每个缩进级别由两个空格组成。注意:不用使用tabs,缩进是初学者总容易出错的地方之一。
规则二:冒号
Python的字典是简单的键值对,其他语言的用户也应该知道这个数据类型叫哈希表或者关联数组。字典的key在YAML中的表现形式是一个以冒号结尾的字符串:
my_key; my_value
在Python中,上面的命令将映射为
{'my_key': 'my_value'}
另外一种选择是,value可以通过缩进与key联接。
my_key:
my_value
在Python中,上面的命令将映射为:
{'my_key': 'my_value'}
字典可以嵌套,如下所示:
first_level_dict_key:
second_level_dict_key: value_in_second_level_dict
在Python中上面的YAML语句会映射为
{
'first_level_dict_key': {
'second_level_dict_key': 'value_in_second_level_dict'
}
}
规则三:短横杠
想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。
- list_value_one
- list_value-two
- list_value_three
列表可以作为一个键值对的value,这在SaltStack中很常见,比如我们要一次性安装多个软件包:
my_dictionary:
- list_value_one
- list_value_two
- list_value_three
在python中,上面的代码将映射为:
{'my_dictionary': {'list_value_one','list_value_two','list_value_three'}
好的。有了这个YAML语法的游泳圈,我们在Salt中就不会迷失,因各种小失误(多缩进一个空格)降低大家对Salt的热爱。最后再强调一下冒号后面都有一个空格(表示路径的除外)!