YAML(Yet Another Markup Language),另一种标志语言。。。是一种用来表达数据序列的编程语言,它的主要特点包括:可读性强、语法简单明了,支持丰富的语言解析库,通用性强。ansible和saltstack环境中的配置文件都以YAML格式存在。
YAML 的配置文件后缀为 .yml
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用
Tab
,只允许空格 - 缩进的空格数不重要(一般是两个),只要相同层级的元素左对齐即可
#
表示注释
YAML 对象
又称块映射描述,对象键值对使用冒号结构表示 key: value
,冒号后面要加一个空格。描述的元素序列在 Python 中表现为字典
alice:
hp: 34
sp: 8
level: 4
bob:
hp: 12
sp: 0
level: 2
# Python解析出的结果为:
{'alice': {'hp':34, 'sp': 8, 'level': 4}, 'bob': {'hp': 66, 'sp': 1, 'level': 4}}
YAML 数组
又称块序列描述,以 -
开头的行表示构成一个数组,-
后面要加一个看空格。描述的序列在 Python 中表现为列表
-
- alice
- bob
- cindy
-
- china
- japan
- US
# Python解析出的结果为:
[['alice', 'bob', 'cindy'], ['china', 'japan', 'US']
复合结构
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
# Python解析出的结果为:
{'languages': ['Ruby', 'Perl', 'Python'], 'websites': {'YAML': 'yaml.org', 'Ruby': 'ruby-lang.org', 'Python': 'python.org', 'Perl': 'use.perl.org'}}
转换为 json 为:
{
"languages": [
"Ruby",
"Perl",
"Python"
],
"websites": {
"YAML": "yaml.org",
"Ruby": "ruby-lang.org",
"Python": "python.org",
"Perl": "use.perl.org"
}
}