Ansible yaml
基础
一、简介
- 功能:YAML 是一种以数据为中心的序列化格式,旨在使配置文件和数据传输更加人类可读和可写。它常用于 Ansible Playbook 中来定义自动化任务的结构和配置。
- 使用场景:YAML 常用于配置管理、数据序列化和数据交换。其简单易读的语法特别适合描述 Ansible 的 Playbook 和其他配置文件。
二、基本语法
2.1 键值对
key: value
- 解释:键值对(key-value pair)是 YAML 的基础结构,
key
是一个字符串,value
是与键关联的值。键和值之间用冒号:
分隔,冒号后面跟一个空格。
2.2 列表
- item1
- item2
- item3
- 解释:列表(List)用于表示一组有序的数据项。每个项前面用短横线(
-
)表示,并且与短横线之间有一个空格。
2.3 字典(映射)
dictionary:
key1: value1
key2: value2
- 解释:字典(Dictionary,也称为映射 Mapping)用于表示一组键值对的集合。嵌套字典表示多层级数据结构。
2.4 缩进
- 解释:YAML 使用空格来表示层级关系,通常使用两个空格。不能使用 Tab 键来缩进,否则会导致解析错误。
示例:
person:
name: John Doe
age: 30
address:
street: 123 Main St
city: Anytown
2.5 注释
- 功能:注释用于在 YAML 文件中添加说明性文本,注释不会被解析器处理。
示例:
# 这是一个注释
name: John Doe # 这是键值对的注释
2.6 多行字符串
- 保留换行符:使用管道符号
|
保留多行字符串的换行符。
示例:
multiline_string: |
这是第一行。
这是第二行。
这是第三行。
- 折叠换行符:使用右尖括号
>
折叠多行字符串的换行符。
示例:
folded_string: >
这是第一行。
这是第二行。
这是第三行。
2.7 字符串引号
- 单引号和双引号:可以使用单引号(
'
)或双引号("
)来表示字符串。双引号可以解析转义字符,而单引号不会。
示例:
single_quoted: '这是一个单引号字符串'
double_quoted: "这是一个双引号字符串,可以包含转义字符如换行符\n"
2.8 锚点和别名
- 锚点(Anchor):使用
&
定义一个锚点,可以在 YAML 文件中重复使用。 - 别名(Alias):使用
*
引用一个已定义的锚点。
示例:
default_settings: &defaults
timeout: 30
retries: 3
user_settings:
<<: *defaults
retries: 5 # 覆盖默认值
三、使用示例
3.1 简单配置文件
server:
hostname: example.com
port: 80
enabled: true
- 解释:这是一个简单的 YAML 配置文件,包含一个服务器的主机名、端口和启用状态。
3.2 复杂嵌套结构
websites:
- name: Personal Blog
url: https://blog.example.com
languages:
- English
- Spanish
- name: Company Site
url: https://www.example.com
languages:
- English
- 解释:这是一个复杂的 YAML 文件,包含多个嵌套结构,表示网站的相关信息。
四、注意事项
- 空格和缩进:YAML 对缩进非常敏感,所有层级必须使用相同数量的空格缩进,建议使用两个空格。
- 数据类型:YAML 会自动推断数据类型,例如布尔值
true
、false
,数字123
,但也可以使用引号将其显式表示为字符串。 - 文件格式:YAML 文件通常以
.yml
或.yaml
为扩展名,推荐使用 UTF-8 编码。 - 转义字符:在双引号字符串中可以使用转义字符(如
\n
表示换行),单引号字符串不会解析转义字符。 - 多行字符串:选择适当的多行字符串表示方式(
|
或>
)来处理换行符,确保数据格式正确。