Yaml 编写入门

yml 我地在springboot 里见得多了.
但yaml 跟yml 是同一种语法的东西, 历史原因例如springboot, docker-compose 仍然在使用yml格式。

但是一些新的tools, 例如ansible 的playbook, k8s 的资源编排已经默认使用yaml后序.

本文来深究yaml的编写方式。



1. yaml 基本语法:

  • 使用双空格作为缩进, 某些编辑器下用tab也行, 但要看tab在那个编辑器内部是怎么实现的, 所以用tab并不安全
  • 缩进的空格数目并不重要, 只要跟同层级的元素对齐, 但是国际惯例是缩进两个空格。
  • 使用# 来comment, 从这个字符 开始一知道到行尾,都是被comment的语句。



2. yaml 支持的数据结构:

2. 1 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

写法1: 用冒号结构表示

例如

Jack:
  name: Jack Black
  age: 20

Bill:
  id: 20
  height: 180

写法2: 用大括号来写行内对象

Jack: {name: Jack Black, age: 20}
Bill: {id: 20, height: 180}

2. 2 数组, 又叫列表(List)

写法1: 一组以 - 开头的值构成1个数组
例如:

People:
  - Jack:
      name: Jack Black
      age: 20

  - Bill: {id: 20, height: 180}

写法2: 用中括号来写行内对象
People: [Jack, Bill]

2.3 纯量,就是所谓的基本数据类型

# 数值直接以数学方式写
number: 12.31

# Boolean 用 true or false
isCreated: true

# null 用 ~ 表示
fruit: ~

# 时间采用 iso8061 格式
createdTime: 2022-10-11t11:44:23.10-05:00

# 日期采用复合 iso8061 格式
date: 1992-09-03

# String 一般不用带引号
words: helloworld

# 如果 string的值带特殊字符, 则需要被单引号括住
str: 'hello: world'



3. yaml 的引用

& 锚点和 * 别名,可以用来引用:

例子

SIT: &SIT_HOST
  hostname: project.sit.hk.hsbc
  port: 2001

SIT_RO1:
  schema: RO1
  <<: *SIT_HOST

SIT_RO2:
  schema: RO2
  <<: *SIT_HOST

效果相当于:

SIT: &SIT_HOST
  hostname: project.sit.hk.hsbc
  port: 2001

SIT_RO1:
  schema: RO1
  hostname: project.sit.hk.hsbc
  port: 2001

SIT_RO2:
  schema: RO2
  hostname: project.sit.hk.hsbc
  port: 2001
  1. 锚点必须设置在引用之前
  2. 锚点处的值不能为引用值,必须为具体值

你可能感兴趣的:(yaml,ym,yaml)