yaml

语法:

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

支持的数据类型

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

scalar 标量

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

# 一行
name: lujinkai
# 使用缩进
name:
  wang

dictionary 字典

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

# 一行
account: { name: lujinkai, age: 26 }
# 使用缩进
account:
  name: lujinkai
  age: 26

list 列表

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

# 一行
skills: [ linux, golang, python ]
# 使用缩进
skills:
  - linux
  - golang
  - python

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

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 }