阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

249次阅读
没有评论

共计 3240 个字符,预计需要花费 9 分钟才能阅读完成。

一、基础介绍

ansible 基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149671.htm

puppet 基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149672.htm

saltstack 基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149675.htm

二、技术特性比较

名称
Puppet
SaltStack
Ansible
开发语言RubyPythonPython
客户端
二次开发不支持支持支持
通信验证
同学加密标准 SSL 协议AES 加密OpenSSH
平台支持AIX,BSD,HP-UX,Linux,Mac OS X,Solaris,WindowsBSD,Linux,Mac OS X,Solaris,WindowsAIX,BSD,HP-UX,Linux,Mac OS X,Solaris
配置文件格式Ruby 语法格式YAMLYAML
Web UI提供提供提供(商业版本)
命令执行不支持(配置模块可实现)支持支持

三、优缺点对比

 

名称
优势
劣势
成本
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.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 的较大优点在于可扩展性和弹性。你可以有多个级别的主服务器。上游主服务器可以控制下游主服务器及其客户端。另一个优点在于对等系统,让客户端可以向主服务器提出问题,然后主服务器从其他服务器得到答案,提供全面信息。如果需要在实时数据库中查询数据,以便完成客户端的配置,这个优点就很方便。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149676.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3240字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中