yaml 格式
文章目录
- yaml 格式
-
-
- YAML 注释
- YAML 单行字符串
- YAML 多行字符串
- YAML 字典
- YAML 列表
- YAML 字典
- YAML 列表
-
—
apiVersion: v1
kind: Pod
metadata:
labels:
run: webapp01
app: web
name: webapp01
namespace: pods
spec:
containers:
– image: hub.xiaoma.cloud/library/nginx
name: web1
– image: hub.xiaoma.cloud/library/httpd
name: web2
dnsPolicy: ClusterFirst
nodeName: worker32.xiaoma.cloud
…
yaml格式只使用空格缩进,对于空格的数量没有强制要求,正常使用2个空格。
基本规则:
- 同一级别的元素,使用相同的缩进。
- 对于子项目,使用比父项目更多的缩进。
- 增加空白行,提高可读性。
YAML 注释
在 YAML中, 编号或井号符号(#)右侧的所有内容都是注释。如果注释的左侧有内容, 请在该编号符号的前面加一个空格。注释可用于提高可读性。
示例:
# This is YAML comment
Some data # This is also a YAML comment
YAML 单行字符串
YAML中的字符串通常不需要放在引号里,即使字符串中包含空格。
字符串也可以用双引号或单引号括起。
this is a string
'this is another string'
"this is yet another a string"
YAML 多行字符串
-
可以使用竖线(I)字符表示,保留字符串中的换行字符。
示例:
—
– name: test string
hosts: node1
tasks:
– name: test string
# 用户显示变量值或者字符串
debug:
msg: |
Example Company
123 Main Street
Atlanta, GA 30303 -
也可以使用大于号(>)字符表示换行字符。执行时换行符使用空格代替,并且行内的引导空白将被删除。
示例:
—
– name: test string
hosts: node1
tasks:
– name: test string
# 用户显示变量值或者字符串
debug:
msg: >
This is an example
of a long string,
that will become
a single sentence once folded.这种方法通常用于将很长的字符串在空格字符处断行,使它们跨占多行来提高可读性。
YAML 字典
一组键值对的集合,又称为映射(mapping)和哈希(hashes)。
以缩进块的形式编写键值对集合,如下方所示:user属性是字典格式,是多个键值对集合。
user:
name: xiaoma
uid: 1088
state: absent
字典也可以使用以花括号括起的内联块格式编写,如下方所示:
user: {name: xiaoma, uid: 1088, state: absent}
大多数情形中应避免内联块格式,其可读性较差。不过,当playbook中包含角色列表时,使用这种语法,更加容易区分play中包含的角色和传递给角色的变量。
某些 playbook 可能使用较旧的简写(shorthand)格式,通过将模块的键值对放在与模块名称相同的行上来定义任务。
示例:
– name: shorhand form
user: name=xiaoma uid=1088 state=absent
普通格式:
– name: shorhand form
user:
name: xiaoma
uid: 1088
state: absent
两者格式总结:
- 通常您应避免简写格式,而使用普通格式。
- 普通格式的行数较多,更容易操作。任务的关键字垂直堆叠,更容易区分。 阅读play时,您的眼睛直接向下扫视,左右运动较少。
- 普通格式是原生的YAML,现代文本编辑器中的语法突出显示工具可以识别,简写形式则不支持。
- 可能会在文档和他人提供的旧playbook中看到这种语法,而且这种语法仍然可以发挥作用。
YAML 列表
一组按次序排列的值,又称为序列(sequence)和数组(array)。
以缩进块的形式编写的键值对集合,如下方所示:
– name: latest version of httpd and firewalld installed
yum:
name:
– httpd
– firewalld
state: latest
– name: test html page is installed
copy:
content: "Welcome to the example.com intranet!\\n"
dest: /var/www/html/index.html
以上有两个任务,每个任务都是多个键值对描述。其中yum模块操作的软件包是一个简单的名称列表。
内联格式:
name: [httpd, firewalld]
尽量避免内联格式。 Street Atlanta, GA 30303
– 也可以使用**大于号**(>)字符表示换行字符。执行时换行符使用空格代替,并且行内的引导空白将被删除。
示例:
```yaml
—
– name: test string
hosts: node1
tasks:
– name: test string
# 用户显示变量值或者字符串
debug:
msg: >
This is an example
of a long string,
that will become
a single sentence once folded.
这种方法通常用于将很长的字符串在空格字符处断行,使它们跨占多行来提高可读性。
YAML 字典
一组键值对的集合,又称为映射(mapping)和哈希(hashes)。
以缩进块的形式编写键值对集合,如下方所示:user属性是字典格式,是多个键值对集合。
user:
name: xiaoma
uid: 1088
state: absent
字典也可以使用以花括号括起的内联块格式编写,如下方所示:
user: {name: xiaoma, uid: 1088, state: absent}
大多数情形中应避免内联块格式,其可读性较差。不过,当playbook中包含角色列表时,使用这种语法,更加容易区分play中包含的角色和传递给角色的变量。
某些 playbook 可能使用较旧的简写(shorthand)格式,通过将模块的键值对放在与模块名称相同的行上来定义任务。
示例:
– name: shorhand form
user: name=xiaoma uid=1088 state=absent
普通格式:
– name: shorhand form
user:
name: xiaoma
uid: 1088
state: absent
两者格式总结:
- 通常您应避免简写格式,而使用普通格式。
- 普通格式的行数较多,更容易操作。任务的关键字垂直堆叠,更容易区分。 阅读play时,您的眼睛直接向下扫视,左右运动较少。
- 普通格式是原生的YAML,现代文本编辑器中的语法突出显示工具可以识别,简写形式则不支持。
- 可能会在文档和他人提供的旧playbook中看到这种语法,而且这种语法仍然可以发挥作用。
YAML 列表
一组按次序排列的值,又称为序列(sequence)和数组(array)。
以缩进块的形式编写的键值对集合,如下方所示:
– name: latest version of httpd and firewalld installed
yum:
name:
– httpd
– firewalld
state: latest
– name: test html page is installed
copy:
content: "Welcome to the example.com intranet!\\n"
dest: /var/www/html/index.html
以上有两个任务,每个任务都是多个键值对描述。其中yum模块操作的软件包是一个简单的名称列表。
内联格式:
name: [httpd, firewalld]
尽量避免内联格式。




