yaml

语法:

  • 扩展名通常为 yml 或 yaml
  • 在单一文件第一行,用连续三个连字号”-“ 开始,还有选择性的连续三个点号( … )用来表示文件的结尾
  • 次行开始正常写 Playbook 的内容,一般建议写明该 Playbook 的功能
  • 使用#号注释代码
  • 缩进必须是统一的,不能空格和 tab 混用
  • 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的
  • YAML 文件内容是区别大小写的,key/value 的值均需大小写敏感
  • 多个 key/value 可同行写也可换行写,同行使用,分隔
  • key 后面冒号要加一个空格 比如: key: value
  • value 可是个字符串,也可是另一个列表

支持的数据类型

  • 标量:单个的、不可再分的值
  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

scalar 标量

标量是最基本的,不可再分的值,包括:字符串、布尔值、整数、浮点数、Null、时间、日期

1
2
3
4
5
# 一行
name: lujinkai
# 使用缩进
name:
wang

dictionary 字典

字典由多个键值对组成,键值用: 分割,注意:后面有一个空格;值可以是标量、列表或其他字典

1
2
3
4
5
6
# 一行
account: { name: lujinkai, age: 26 }
# 使用缩进
account:
name: lujinkai
age: 26

list 列表

列表由多个元素组成,元素可以是标量、字典或其他列表

1
2
3
4
5
6
7
# 一行
skills: [ linux, golang, python ]
# 使用缩进
skills:
- linux
- golang
- python

范例:使用 yaml 表示一个家庭

1
2
3
4
5
6
7
8
9
10
11
12
13
name: John Smith
age: 41
gender: Male
spouse:
name: Jane Smith
age: 37
gender: Female
children:
- name: Jimmy Smith
age: 17
gender: Male
- { name: Jenny Smith, age: 13, gender: Female }
- { name: hao Smith, age: 20, gender: Male }