欢迎光临
我们一直在努力

K8s YAML 语法入门:注释、字符串、字典与列表

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]

尽量避免内联格式。

赞(0)
未经允许不得转载:171主机测评 » K8s YAML 语法入门:注释、字符串、字典与列表
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址