ansible puppet saltstack三款自动化运维工具的对比

1、基础介绍
数据库

ansible基础介绍可参考:http://kaliarch.blog.51cto.com/8966921/1971185编程

puppet基础介绍可参考:http://kaliarch.blog.51cto.com/8966921/1973736服务器

saltstack基础介绍可参考:http://kaliarch.blog.51cto.com/8966921/1975219网络

2、技术特性比较异步

名称
Puppet
SaltStack
Ansible
开发语言
Ruby
Python
Python
客户端



二次开发
不支持
支持
支持
通讯验证



加密方式
标准SSL协议
AES加密
OpenSSH
平台支持
AIX,BSD,HP-UX,Linux,Mac OS X,Solaris,Windows
BSD,Linux,Mac OS X,Solaris,Windows
AIX,BSD,HP-UX,Linux,Mac OS X,Solaris
配置文件格式
Ruby语法格式
YAML
YAML
Web UI
提供
提供
提供(商业版本)
命令执行
不支持(配置模块可实现)
支持
支持

3、优缺点对比ide

名称
优点
劣势
成本
Puppet
  • 模块由Ruby或Ruby子集编写工具

  • push命令能够便可触发变动学习

  • Web界面生成处理报表、资源清单、实时节点管理云计算

  • 代理运行端进行详细、深刻的报告和对节点进行配置加密

  • 相对其余工具较复杂,需学习Puppet的DSL或Ruby

  • 安装过程缺乏错误校验和产生错误报表

  • 开源软件免费

  • SaltStack企业版每一年内个节点花费约¥100

Saltstack
  • 状态文件可用简单YAML配置模块或复杂的Python/PyDSL脚本

  • 与客户端能够基于SSH或在被管节点安装代理

  • Web界面可看到运行的工做、minion状态、事件日志、可在客户端执行命令

  • 扩展能力极强

  • Web界面像毒药竞争产品不稳定与相对不完善

  • 缺少生成深度报告的能力

  • 开源软件免费

  • SaltStack企业版每一年内个节点花费约¥150,随着数量增长相应的会有折扣

Ansible
  • 模块能够用任何语言开发

  • 备管节点不须要安装代理软件

  • 有Web管理界面、可配置用户、组、资源清单和执行Playbook

  • 安装、运行极其简单

  • 对备管理节点为Windows有待增强

  • Web管理界面是内置的Ansible的一部分

  • 需导入资源清单

  • 执行效率较低

  • 开源版本免费

  • Ansible Tower小于10台被管理节点免费

  • 超过10太后没年每台需支付¥100~$250的支持服务费用

4、推荐场景

4.1 Puppet

  Puppet也许是四款工具中最深刻人心的。就可用操做、模块和用户界面而言,它是最全面的。Puppet呈现了数据中心协调的全貌,几乎涵盖每个运行系统,为各大操做系统提供了深刻的工具。初始设置比较简单,只须要在须要加以管理的每一个系统上安装主服务器和客户端代理软件。

  命令行接口(CLI)简单直观,容许经过puppet命令下载和安装模块。而后,须要对配置文件进行更改,好让模块适合所需的任务;应接到指令的客户端与主服务器联系时,会更改配置文件,或者客户端经过当即触发更改配置文件的推送(push)来进行更改。

  还有一些模块能够提供和配置云服务器实例和虚拟服务器实例。全部模块和配置都使用基于Ruby的Puppet专属语言或者Ruby自己构建而成,于是除了系统管理技能外,还须要编程专业知识。

  Puppet企业版拥有最全面的Web用户界面,容许使用主服务器上的预制模块和菜谱(cookbook),实时控制被管理的节点。Web用户界面很适合用于管理,可是不容许对模块进行诸多配置。报告工具很是完善,提供了详细信息,以便了解代理软件运行如何、已作出什么样的变动。

4.2 Ansible

  Ansible极其相似Salt,而不太相似Puppet或Chef。Ansible关注的重点是力求精简和快速,并且不须要在节点上安装代理软件。所以,Ansible经过SSH执行全部功能。Ansible基于Python;相比之下,Puppet和Chef基于Ruby。

  Ansible能够经过Git软件库克隆,安装到Ansible主服务器上。安装完毕后,须要管理的节点被添加到Ansible配置环境,SSH受权密钥被附加到每一个节点上,这与运行Ansible的用户有关。一旦完成了这步,Ansible主服务器能够经过SSH与节点进行通讯,执行全部必要的任务。为了与默认状况下不容许根SSH访问的操做系统或发行版协同运行,Ansible接受sudo登陆信息,以便在那些系统上以根用户的身份运行命令。

  Ansible可使用Paramiko(基于SSH2协议的Python实现)或标准SSH用于通讯,不过还有一种加速模式,容许更快速、更大规模的通讯。

  针对确保服务在运行,或者触发更新和从新启动之类的简单任务,Ansible能够从命令行来运行,不须要使用配置文件。至于比较复杂的任务,Ansible配置经过名为Playbook的配置文件中的YAML语法来加以处理。Playbook还可使用模板来扩展其功能。

  Ansible有一大批模块,可用于管理各类系统以及亚马逊弹性计算云(EC2)和OpenStack等云计算基础设施。能够用几乎任何一种语言来编写自定义Ansible模块,只要模块输出是有效的JSON。

  Ansible的Web用户界面以AnsibleWorks AWX的形式出现,但AWX与CLI并不直接联系在一块儿。这意味着,除非进行了同步过程,不然CLI里面的配置元素不会出如今Web用户界面中。你可使用那个内置的同步工具,让二者保持一致,但须要按照预约计划运行同步工具。

4.3 SaltStack

  Salt相似Ansible,由于它也是基于CLI的工具,采用了推送方法实现客户端通讯。它能够经过Git或经过程序包管理系统安装到主服务器和客户端上。客户端会向主服务器提出请求,请求在主服务器上获得接受后,就能够控制该客户端了。

  Salt能够经过普通的SSH与客户端进行通讯,但若是使用名为minion的客户端代理软件,能够大大加强可扩展性。此外,Salt含有一个异步文件服务器,能够为客户端加快文件服务速度,这彻底是Salt注重高扩展性的一个体现。

  与Ansible同样,你能够直接经过CLI,向客户端发出命令,好比启动服务或安装程序包;你也可使用名为state的YAML配置文件,处理比较复杂的任务。还有“pillar”,这些是放在集中地方的数据集,YAML配置文件能够在运行期间访问它们。

  你能够直接经过CLI,向客户端请求配置信息,好比内核版本或网络接口方面的详细信息。只要使用名为“grain”的库存元素,就能够描述客户端;这样一来,管理员能够轻松向某一种类型的服务器发出命令,不须要依赖已配置群组。好比说,只要使用一个CLI命令,你就能够向运行某个内核版本的每一个客户端发送命令。

  与Puppet、Chef和Ansible同样,Salt也提供了大量的模块,以处理特定的软件、操做系统和云服务。自定义模块能够用Python或PyDSL来编写。除了Unix管理外,Salt的确提供Windows管理功能,但它仍是更擅长管理Unix和Linux系统。

  Salt的Web用户界面Halite很是新,功能不如其余系统的Web用户界面来得全面。它提供了事件日志和客户端状态的视图,可以在客户端上运行命令,但除此以外乏善可陈。

  Salt的较大优势在于可扩展性和弹性。你能够有多个级别的主服务器。上游主服务器能够控制下游主服务器及其客户端。另外一个优势在于对等系统,让客户端能够向主服务器提出问题,而后主服务器从其余服务器获得答案,提供全面信息。若是须要在实时数据库中查询数据,以便完成客户端的配置,这个优势就很方便。

相关文章
相关标签/搜索