美文网首页敏捷交付和运维
Chef vs. Puppet vs. Ansible vs.

Chef vs. Puppet vs. Ansible vs.

作者: C86guli | 来源:发表于2016-08-13 04:19 被阅读3706次

    2015年10月28日发布

    This talk will cover the pros and cons of four different OpenStack deployment mechanisms. Puppet, Chef, Ansible, and Salt for OpenStack all claim to make it much easier to configure and maintain hundreds of OpenStack deployment resources. With the advent of large-scale, highly available OpenStack deployments spread across multiple global regions, the choice of which deployment methodology to use has become more and more relevant.

    视频:
    https://www.youtube.com/watch?v=2H95tx7Fuv4

    此视频的目的是:帮助你对配置管理工具做一个合理的选择

    1,为什么配置管理对于运行 OpenStack 是关键性的?

    复杂性:OpenStack 是一个大型的分布式 Iaas 云系统
    变化:OpenStack 是一个开源项目,升级快速
    持续性:OpenStack 集群经常被复制到多个环境
    兼容性:OpenStack 自动化的关键性,速度,可靠性,兼容性
    质量保证:OpenStack CM 工具是云管理实现的最佳实践

    2,四个最流行的配置管理项目是什么?

    对于如今的运维来说,配置管理工具是工作核心的一部分。

    工具的流行程度:正在使用/计划使用

    Chef: 28%/18%
    Puppet: 24%/19%
    Docker: 13%/35%
    Ansible: 10%/10%
    Salt: 6%/10%

    出现时间:

    Puppet: 2005
    Chef: 2008
    Satl: 2012
    Ansible: 2013

    Snip20160813_78.png Snip20160813_76.png

    3,它们各自支持 OpenStack 部署的力度

    Salt:

    配置管理系统,能够与大规模的系统进行高速的通信。

    能力:可以维持被控节点的状态为被定义的状态(例如,确保某个 packages 的安装,确保某个服务处于运行状态)

    基于 Python 开发,使用 push 或者 SSH 与客户端进行通信。可以查询远程节点的数据。

    使用 AES 协议,加密地并发执行远程命令

    网络层构建于 ZeroMQ 分部署消息网络库,使用 mspack 对二进制数据进行序列化,以确保快速的网络通信。

    Salt 的特点和特性

    高可扩展性:垂直和水平扩展
    一个主控机的管理多个主控节点

    Peer Interface: 允许 Minions 控制其他 Minions;有利于查询和连续的代码发送

    Reactor system: resides on Event Bus with Master;对于事件的反应能力;可用于自动代码部署。

    Snip20160813_79.png Snip20160813_80.png

    Salt 主要组件:

    Salt Master - 控制 Minions

    Master Daemon - 为 Master 运行任务(认证 minions, 与连接的 minions 通信,salt CLI)

    Salt Client - 与 Master 运行在同一个机器上;提供命令给 Master;用于可通过 Clinet 看到执行结果

    Minion - 从 Master 接收命令,运行任务,并返回结果给 Master

    Salt Modules - 可在 Salt CLI 上运行的 function (patterns)

    Halite - 可选的 web UI

    Snip20160813_81.png Snip20160813_82.png Snip20160813_83.png

    Salt 总结:

    Snip20160813_84.png

    Ansible

    • Ansible 是一个远程命令执行系统,可对命令执行进行编排,可数据进行查询。它是一个配置管理 & 命令执行工具。

    • 基于 Python,playbooks 的配置语言是 YAML,易于读写

    • 提供多种 push 方法,最主要的是基于 SSH 的推送方法

    • 不需要 agent,但需要能 SSH 访问被控节点,以及要求被控节点安装了 Python 解释器

    特点:

    • 高可扩展性
    • Fact Sharing
    • 强大的编排引擎

    Ansible 架构

    Snip20160813_85.png

    主要组件:

    Ansible - Python CLI and libraries
    Playbooks - YAML 文件,描述任务如何被执行
    Roles - Playbooks 和 Varaibles 的集合
    Inventory - 服务器的分组列表
    Tower - 企业版

    for OpenStack

    Snip20160813_86.png Snip20160813_87.png Snip20160813_88.png Snip20160813_89.png

    Ansible 优缺点总结:

    Snip20160813_90.png

    Puppet

    开源的配置管理工具,可进行自动化的系统管理。

    以 Client/Server 架构部署,client 周期性地轮询 Server,以获得期望的状态,并且返回状态报告给 master

    分布式的架构,快速,高效地 provison, 升级,管理节点

    基于 Ruby,使用可定制的 DSL 编写 manifest,采用 ERB 构建模块

    比较容易增加、删除节点;每个集群可有多个 master,组成 HA 架构。

    任务是幂等性的(多次执行,结果一样),只当节点状态不符合要求时才执行

    资源是高度抽象的,用户可忽略命令名、文件格式、文件路径等细节。making manifests OS agnostic

    Snip20160813_92.png Snip20160813_93.png

    for OpenStack

    Snip20160813_94.png Snip20160813_95.png

    Puppet 优缺点总结:

    Snip20160813_96.png

    Chef:

    Snip20160813_97.png Snip20160813_98.png Snip20160813_99.png Snip20160813_100.png Snip20160813_101.png Snip20160813_102.png

    Chef 优缺点总结

    Snip20160813_103.png

    几种工具的对比:

    Snip20160813_104.png

    4,根据你的角色和组织,如何选择特定的工具

    作为管理者,关心的是稳定性,可维护性,大规模部署能力

    相关文章

      网友评论

        本文标题:Chef vs. Puppet vs. Ansible vs.

        本文链接:https://www.haomeiwen.com/subject/edvesttx.html