- 本书赞誉
- 前言
- 第一部分 基础篇
- 第1章 系统基础信息模块详解
- 第2章 业务服务监控详解
- 第3章 定制业务质量报表详解
- 第4章 Python 与系统安全
- 第二部分 高级篇
- 第5章 系统批量运维管理器 pexpect 详解
- 第6章 系统批量运维管理器 paramiko 详解
- 第7章 系统批量运维管理器Fabric详解
- 第8章 从零开发一个轻量级 WebServer
- 第9章 集中化管理平台 Ansible 详解
- 第10章 集中化管理平台 Saltstack 详解
- 第11章 统一网络控制器 Func 详解
- 第12章 Python 大数据应用详解
- 第三部分 案例篇
- 第13章 从零开始打造 B/S 自动化运维平台
- 第14章 打造 Linux 系统安全审计功能
- 第15章 构建分布式质量监控平台
- 第16章 构建桌面版 C/S 自动化运维平台
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.1 YAML 语言
YAML是一种用来表达数据序列的编程语言,它的主要特点包括:可读性强、语法简单明了、支持丰富的语言解析库、通用性强等。Ansible与Saltstack环境中配置文件都以YAML格式存在,熟悉YAML结构及语法对我们理解两环境的相关配置至关重要。下面的示例定义了在master的不同业务环境下文件根路径的描述:
file_roots: base: - /srv/salt/ dev: - /srv/salt/dev prod: - /srv/salt/prod
本节主要通过YAML描述与Python的对应关系,从而方便读者了解YAML的层次及结构,最常见的是映射到Python中的列表(List)、字典(Dictionary)两种对象类型。下面通过块序列与块映射的示例详细说明。
9.1.1 块序列描述
块序列就是将描述的元素序列到Python的列表(List)中。以下代码演示了YAML与Python的对应关系:
import yaml obj=yaml.load( """ - Hesperiidae - Papilionidae - Apatelodidae - Epiplemidae """) print obj
本例中引用“-”来分隔列表中的每个元素,运行结果如下:
['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']
YAML也存在类似于Python块的概念,例如:
- - Hesperiidae - Papilionidae - Apatelodidae - Epiplemidae - - China - USA - Japan
对应的Python结果为:
[['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae'], ['China', 'USA', 'Japan']]
9.1.2 块映射描述
块映射就是将描述的元素序列到Python的字典(Dictionary)中,格式为“键(key):值(value)”,以下为YAML例子:
hero: hp: 34 sp: 8 level: 4 orc: hp: 12 sp: 0 level: 2
对应的Python结果为:
{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
当然,YAML块序列与块映射是可以自由组合在一起的,它们之间可以相互嵌套,通过非常灵活的组合,可以帮助我们描述更加复杂的对象属性,例如:
- hero: hp: 34 sp: 8 level: 4 - orc: hp: - 12 - 30 sp: 0 level: 2
对应的Python结果为:
[{'hero': {'hp': 34, 'sp': 8, 'level': 4}}, {'orc': {'hp': [12, 30], 'sp': 0, 'level': 2}}]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论