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

作者:cakincqm 时间:2023-09-23 12:52:34 

本文实例讲述了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(插件) 组成。

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

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程序设计有所帮助。

来源:https://blog.csdn.net/chengqiuming/article/details/88078189

标签:Python,Ansible,YAML
0
投稿

猜你喜欢

  • vue项目中如何调用多个不同的ip接口

    2024-04-10 10:32:37
  • MySQL Semisynchronous Replication介绍

    2024-01-12 19:42:02
  • sql存储过程获取汉字拼音头字母函数

    2011-11-03 16:58:05
  • MySQL5.7 windows二进制安装教程

    2024-01-24 04:10:01
  • git stash的正确用法详解

    2022-11-06 19:10:07
  • Python使用pyautogui模块实现自动化鼠标和键盘操作示例

    2022-10-27 16:02:25
  • Python接口测试数据库封装实现原理

    2024-01-27 11:19:46
  • Python函数式编程实现登录注册功能

    2022-02-16 14:03:31
  • REPAIR TABLE语法介绍——MySQL数据库

    2012-01-05 19:08:59
  • textarea 在IE和FF下换行无法正常显示的解决方法

    2022-09-11 01:33:40
  • asp如何做一个随机密码产生器?

    2010-07-12 18:57:00
  • Scrapy框架使用的基本知识

    2022-02-23 22:27:27
  • JavaScript循环遍历的24个方法,你都知道吗

    2024-04-17 09:41:18
  • Python基于tkinter模块实现的改名小工具示例

    2023-08-31 10:40:01
  • pygame游戏之旅 添加icon和bgm音效的方法

    2022-02-10 19:25:31
  • MySQL数据库约束详解

    2024-01-24 14:41:01
  • 利用python调用摄像头的实例分析

    2022-01-03 22:10:14
  • 在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

    2021-09-04 07:31:23
  • ASP+ajax注册即时提示程序代码

    2011-02-05 11:25:00
  • vue函数防抖与节流的正确使用方法

    2024-05-29 22:43:01
  • asp之家 网络编程 m.aspxhome.com