本文实例讲述了Python集中化管理平台Ansible介绍与YAML。分享给大家供大家参考,具体如下:
一 中文社区
http://ansible.cn/forum.php
二 点睛
Ansible(http://www.ansibleworks.com/)一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,是AnsibleWorks公司名下的项目,该公司由Cobbler及Func的作者于2012年创建成立。Ansible基于Python语言实现,由Paramiko和PyYAML两个关键模块构建。
Ansible具有如下特点:
- 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
- 默认使用SSH(Secure SHell)协议对设备进行管理;
- 主从集中化管理;
- 配置简单、功能强大、扩展性强;
- 支持API及自定义模块,可通过Python轻松扩展;
- 通过Playbooks来定制强大的配置、状态管理;
- 对云计算平台、大数据都有很好的支持;
- 提供一个功能强大、操作性强的Web管理界面和REST API接口 ——AWX平台。
Ansible的架构图如下,用户通过Ansible编排引擎操作公共/私有云或CMDB(配置管理数据库)中的主机,其中Ansible编排引擎由 Inventory(主机与组规则)、API、Modules(模块)、Plugins(插件) 组成。
Ansible与Saltstack最大的区别是Ansible无需在被控主机部署任何客户端代理,默认直接通过SSH通道进行远程命令执行或下发配置;相同点是都具备功能强大、灵活的系统管理、状态配置,都使用YAML格式 来描述配置,两者都提供丰富的模板及API,对云计算平台、大数据都有很好的支持。
Ansible在GitHub上的地址为https://github.com/ansible/, 其中提供了不少配置例子供参考。
三 YAML语言
1 点睛
YAML是一种用来表达数据序列的编程语言,它的主要特点包括: 可读性强、语法简单明了、支持丰富的语言解析库、通用性强等。 Ansible与Saltstack环境中配置文件都以YAML格式存在,熟悉YAML结构及语法对我们理解两环境的相关配置至关重要。
下面的示例定义了在 master的不同业务环境下文件根路径的描述:
file_roots: base: - /srv/salt/ dev: - /srv/salt/dev prod: - /srv/salt/prod
2 块序列描述
块序列就是将描述的元素序列映射到Python的列表(List)中。以下代码演示了YAML与Python的对应关系:
import yaml obj=yaml.load( """ - Hesperiidae - Papilionidae - Apatelodidae - Epiplemidae """) print obj
本例中引用“-”来分隔列表中的每个元素,运行结果如下:
E:\Python\python_auto_maintain\venv\Scripts\python.exe E:/Python/python_auto_maintain/9_1_1.py
['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']
YAML也存在类似于Python块的概念,例如:
- Hesperiidae - Papilionidae - Apatelodidae - Epiplemidae - China - USA - Japan
3 块映射描述
块映射就是将描述的元素序列映射到Python的字典(Dictionary)中, 格式为“键(key):值(value)”,以下为YAML例子:
import yaml obj=yaml.load( """ hero: hp: 34 sp: 8 level: 4 orc: hp: 12 sp: 0 level: 2 """) print obj
对应的Python结果为:
E:\Python\python_auto_maintain\venv\Scripts\python.exe E:/Python/python_auto_maintain/9_1_1.py
{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
4 嵌套
YAML块序列与块映射是可以自由组合在一起的,它们之间可以相互嵌套,通过非常灵活的组合,可以帮助我们描述更加复杂的对象属性,例如:
import yaml obj=yaml.load( """ - hero: hp: 34 sp: 8 level: 4 - orc: hp: - 12 - 30 sp: 0 level: 2 """) print obj
运行结果如下:
E:\Python\python_auto_maintain\venv\Scripts\python.exe E:/Python/python_auto_maintain/9_1_1.py
[{'hero': {'hp': 34, 'sp': 8, 'level': 4}}, {'orc': {'hp': [12, 30], 'sp': 0, 'level': 2}}]
更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。