YAML入门教程
简介
https://www.runoob.com/w3cnote/yaml-intro.html
yml文件是yaml语法格式的文件,
我们使用YAML是因为它像XML或JSON那样是一种利于读写的数据格式。
另外,在大多数编程语言中有使用YAML的库。
所有的YAML文件(无论与Ansible有没有关系)开始行都应该是---,这是YAML格式的一部分,表明一个文件的开始。
YAML一般有下列两种数据结构:
- 列表:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 字典:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
列表中的所有成员都开始于相同的缩进级别,并且使用一个"-"作为开头(一个横杠和一个空格)。
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
注意:只能使用空格缩进,不能使用 tab,如果使用 vi 编辑器,可以通过编辑 $HOME/.vimrc 将 Tab 转化为2个空格
autocmd FileType yaml setlocal ai ts=2 sw=2 et
YAML 字典
简单字典
一个字典是由一个简单的键:值的形式组成
key: value
(这个冒号后面必须是一个空格)。。
示例如下:
--- # 一位职工的信息 name: Example Developer
复合字典
字典的值也可以包含子键值对:
key: child-key: value child-key2: value2
示例:
# 一位职工的信息 worker: name: Example Developer job: Developer skill: Elite
也可以使用 key:{key1: value1, key2: value2, ...}。
字段也可以使用缩进方式来表示:
# 一位职工的记录 worker: {name: Example Developer, job: Developer, skill: Elite}
复杂字典
较为复杂的对象格式,可以使用问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value:
? - complexkey1 - complexkey2 : - complexvalue1 - complexvalue2
意思即对象的属性是一个数组 [complexkey1,complexkey2],对应的值也是一个数组 [complexvalue1,complexvalue2]
YAML列表
以 - 开头的行表示构成一个列表
一维列表
列表中的所有成员都开始于相同的缩进级别,并且使用一个"-"作为开头(一个横杠和一个空格)。
--- #一个美味水果的列表 - Apple - Orange - Strawberry - Mango
多维列表
YAML 支持多维列表,可以使用行内表示:
key: [value1, value2, ...]
数据结构的子成员是一个列表,则可以在该项下面缩进一个空格。
一个相对复杂的例子:
companies:
- id: 1 name: company1 price: 200W - id: 2 name: company2 price: 500W
意思是 companies这个键的属性是一个数组,每一个数组元素又是由 id、name、price 三个属性构成。
列表的成员仍是列表
- - A - B - C - - D - E - F
YAML复合结构
数组和对象可以构成复合结构,例:
languages: - Ruby - Perl - Python
- YAML: yaml.org Ruby: ruby-lang.org - Python: python.org Perl: use.perl.org
我们把目前所学到的YAML例子组合在一起。
--- # 一位职工的记录 name: Example Developer job: Developer skill: Elite employed:True languages: ruby: Elite python: Elite dotnet: Lame foods: - Apple - Orange - Strawberry - Mango
以上就是编写Ansible playbooks需要知道的所有YAML语法。