脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python集中化管理平台Ansible介绍与YAML简介

Python集中化管理平台Ansible介绍与YAML简介

2021-07-11 00:29cakincqm Python

这篇文章主要介绍了Python集中化管理平台Ansible介绍与YAML,简单说明了集中化管理平台Ansible的功能与YAML语言的基本语法与基本使用技巧,需要的朋友可以参考下

本文实例讲述了python集中化管理平台ansible介绍与yaml。分享给大家供大家参考,具体如下:

一 中文社区

http://ansible.cn/forum.php

二 点睛

Ansiblehttp://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(插件) 组成。

Python集中化管理平台Ansible介绍与YAML简介

ansible与saltstack最大的区别是ansible无需在被控主机部署任何客户端代理,默认直接通过ssh通道进行远程命令执行或下发配置;相同点是都具备功能强大、灵活的系统管理、状态配置,都使用yaml格式 来描述配置,两者都提供丰富的模板及api,对云计算平台、大数据都有很好的支持。

ansible在github上的地址为https://github.com/ansible/, 其中提供了不少配置例子供参考。

三 yaml语言

1 点睛

yaml是一种用来表达数据序列的编程语言,它的主要特点包括: 可读性强、语法简单明了、支持丰富的语言解析库、通用性强等。 ansible与saltstack环境中配置文件都以yaml格式存在,熟悉yaml结构及语法对我们理解两环境的相关配置至关重要。

下面的示例定义了在 master的不同业务环境下文件根路径的描述:

?
1
2
3
4
file_roots:
base: - /srv/salt/
dev: - /srv/salt/dev
prod: - /srv/salt/prod

2 块序列描述

块序列就是将描述的元素序列映射到python的列表(list)中。以下代码演示了yaml与python的对应关系:

?
1
2
3
4
5
6
7
8
9
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块的概念,例如:

?
1
2
3
4
5
6
7
- hesperiidae
- papilionidae
- apatelodidae
- epiplemidae
- china
- usa
- japan

3 块映射描述

块映射就是将描述的元素序列映射到python的字典(dictionary)中, 格式为“键(key):值(value)”,以下为yaml例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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块序列与块映射是可以自由组合在一起的,它们之间可以相互嵌套,通过非常灵活的组合,可以帮助我们描述更加复杂的对象属性,例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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程序设计有所帮助。

原文链接:https://blog.csdn.net/chengqiuming/article/details/88078189

延伸 · 阅读

精彩推荐