Linux · 2 分钟阅读
YAML: 文件格式
YAML 设计目标:人类一眼能读、机器一秒能解析。Ansible、Kubernetes、GitHub Actions、Helm、Docker Compose 都用它做配置。
基本规则
- 用空格缩进,禁止 Tab
- 缩进对齐即可识别层级,没有固定空格数
- 区分大小写
#注释---文档起始标记...文档结束标记
数据类型
对象(Map / Dict)
name: John Smith
age: 30
address:
street: 123 Main St
city: Boston
country: USA
数组(List)
colors:
- Red
- Blue
- Green
# 行内写法
colors: [Red, Blue, Green]
标量
string1: Hello World # 不含特殊字符
string2: "Hello World" # 含特殊字符或变量时引号
integer: 123
float: 12.30
boolean1: true
boolean2: false
null_value: null # 或 ~
yes/no在 YAML 1.1 里被当成布尔,1.2 起只有true/false是真布尔。要稳妥就全用引号包起来。
进阶
多行字符串
description: |
保留每一行
末尾换行
message: >
多行合并成一行
用空格连接
锚点与引用
defaults: &defaults
timeout: 30
retries: 3
development:
<<: *defaults
host: dev.example.com
production:
<<: *defaults
host: prod.example.com
复杂示例
app:
name: myapp
version: 1.0.0
database:
host: localhost
port: 5432
credentials: &db_creds
user: admin
password: "<PASSWORD>"
services:
- name: web
port: 8080
database: *db_creds
- name: api
port: 3000
database: *db_creds
写 YAML 的几条经验
- 缩进统一 2 空格
- 字符串含
:#&*{}等字符时引号包起来 - 别把锚点放在会被多次合并的位置,会很难调试
- 复杂数据先写 JSON 再转 YAML,避免缩进错乱
- 用
yamllint校验,避免 CI 阶段才发现格式问题