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


    本文实例讲述了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的不同业务环境下文件根路径的描述:

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

    2 块序列描述

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

    1. import yaml
    2. obj=yaml.load(
    3. """
    4. - Hesperiidae
    5. - Papilionidae
    6. - Apatelodidae
    7. - Epiplemidae
    8. """)
    9. 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. - Hesperiidae
    2. - Papilionidae
    3. - Apatelodidae
    4. - Epiplemidae
    5. - China
    6. - USA
    7. - Japan

    3 块映射描述

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

    1. import yaml
    2. obj=yaml.load(
    3. """
    4. hero:
    5. hp: 34
    6. sp: 8
    7. level: 4
    8. orc:
    9. hp: 12
    10. sp: 0
    11. level: 2
    12. """)
    13. 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. import yaml
    2. obj=yaml.load(
    3. """
    4. - hero:
    5. hp: 34
    6. sp: 8
    7. level: 4
    8. - orc:
    9. hp:
    10. - 12
    11. - 30
    12. sp: 0
    13. level: 2
    14. """)
    15. 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}}]

  • 相关阅读:
    Java设计模式(学习整理)---工厂模式
    Java Swing 使用总结(转载)
    Java-生成验证码图片(自定义内容,尺寸,路径)
    二维码(带有图片)的生成
    J2se中的声音---AudioPlayer
    文件的读取和写入(指定路径)
    ASP.NET:使用Flurl制作可复用的分页组件
    ASP.NET:Forms身份验证和基于Role的权限验证
    ASP.NET:MVC模板化机制
    ASP.NET:MVC中文件上传与地址变化处理
  • 原文地址:https://www.cnblogs.com/xiongwei/p/16078011.html
Copyright © 2020-2023  润新知