yaml 简介

YAML 的基本语法规则

  • 大小写敏感
  • 使用缩进表示层级(属性)关系
  • 使用空格表示缩进,不允许使用 TAB
  • 缩进对空格数目不敏感,相同层级需要对齐(一般 2 个或是 4 个空格)
  • # 表示行注释

YAML 的数据结构

对象

key: value 键值对表示(注意:冒号后面有一个空格)

1
2
3
4
5
username: Alex
# 使用缩进表示层级关系
school:
name: 五道口职业技术学院
addr: 北京市海淀区双清路30号

数组

一组用连词线 - 构成的数据结构(注意:连词线后面有一个空格)

1
2
3
4
colors: 
- red
- blue
- yellow

常量

元数据,不可再分,大多情况下指基本数据类型,包括:字符串、布尔值、整数、浮点数、null、时间、日期等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 数值可以直接表示
number: 2.3

# 布尔值用 true 或是 false 表示
isOnline: true

# null 用波浪线表示
isNull: ~

# 时间采用 ISO 8601 格式表示(时间和日期之间使用 T 连接,最后使用 + 代表时区)
time: 2019-08-01T19:02:31+08:00

# 日期用复合 ISO 8601 格式表示
data: 2019-08-01

# 字符串比较复杂
# 默认不用引号
str: hello world
# 如果字符串中间有空格或是特殊字符时,字符串需要放在引号内(单双都可以)
str: 'this is a string'
# 如果字符串中间有单引号,需要用两个单引号进行转义处理
str: 'he''s name is xxx'

常用特殊符号

---

--- 表示一个文档的开始,可以将多个文档写到同一个文件中,比如:

1
2
3
4
5
6
7
8
9
10
---
kube-master:
profile: master
server:
address: 10.192.0.2
---
kube-node-1:
profile: node
server:
address: 10.192.0.3

...--- 配合使用

...--- 配合使用,在一个配置文件中表示一个文件的结束,等同于在一个 YAML 文件中连续写了两个 YAML 配置项,比如:

1
2
3
4
5
6
7
8
---
user: test1
action: login
...
---
user: test2
action: logout
...

!!

!! 可以做类型的强行转换,比如:

1
2
3
4
# 表示把数字和布尔类型都强行转换为字符串
string:
- !!str 123456
- !!str false

*&

在 YAML 中重复的内容可以使用 & 来完成锚点定义,使用 * 来完成锚点引用,比如:

1
2
3
4
5
6
7
8
# 这里使用 &name 为 shixiaomei 设置了一个锚点(引用)
hr:
- shixiaolou
- &name shixiaomei
# 这里使用 *name 引用锚点,指代 shixiaomei
cto:
- *name
- xiaotiepi

>|

> 表示折叠换行,| 表示保留换行符,这两个符合在字符串中经常使用到,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 字符串可以写成多行,从第二行开始,必须有一个单空格缩进,换行符会被转换为空格,结果是
# str=这是一段
# 多行
# 字符串
str: 这是一段
多行
字符串

# `|` 表示保留换行符,结果是
# this=Foo
# Bar
this: |
Foo
Bar

# `>` 表示折叠换行(即将换行符转化为了空格),结果是
# that=Foo Bar
that: >
Foo
Bar
打赏

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信