共计 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 |
开发语言 | 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 | 提供 | 提供 | 提供(商业版本) |
命令执行 | 不支持(配置模块可实现) | 支持 | 支持 |
三、优缺点对比
名称 | 优势 | 劣势 | 成本 |
Puppet |
|
|
|
Saltstack |
|
|
|
Ansible |
|
|
|
四、推荐场景
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