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

一、基础介绍

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

 

转载于:https://www.cnblogs.com/leon2659/p/10195443.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab repmat函数

repmat函数主要是以已知的数、向量或矩阵为基本元素,快速得产生一个大的矩阵,它的用法一般有下面几种: 1.使用相同元素初始化矩阵 A repmat(6,3,2) A 6 6 6 6 6 6 2.方块与矩形块格式 A diag([1 2 3]) b repm…

Linux虚拟地址空间布局

在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设…

我的方法在这方面看起来很大吗?

以下Java方法的大小是多少? public Collection getDescription() {SystemLibrary systemLib registry.get(SystemLibrary.class);Analysis analysis systemLib.getCurrentAnalysis(registry);return getDescription(analysis);}这个不起眼的方法查找某种系统库&a…

arduino 舵机接线图_求用5个电位器分别控制舵机的arduino的原码和连线图

按照上图连线,按照如下代码烧程序。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#define Sin_1 A0 //设置变阻器1路电压采集端口为A0#define Sin_2 A1 //设置变阻器2路电压采集端口为A…

Leetcode 152.乘机最大子序列

乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2,…

Matlab sumsqr函数

功能:求矩阵所有元素的平方和 调用形式: [s,n] sumsqr(x) 例1 a [1 2 3;1 2 3]; [s,n] sumsqr(a) s 28 n 6 例2 c [1 2 3 4;1 2 3 4]; [m,n] sumsqr(c) A sumsqr(c) m 60 n 8 A 60 可以看出n返回值是矩阵元素个数

Kali linux安装漏洞扫描工具Nessus指南

引子:Nessus是著名信息安全服务公司tenable推出的一款漏洞扫描与分析软件,号称是"世界上最流行的漏洞扫描程序,全世界超过75,000个组织在使用它"。尽管这个扫描程序可以免费下载得到,但是要从Tenable更新到所有最新的威胁信息,每年…

*p++和*(p++)的区别_同是华为顶级旗舰,P系和Mate系谁最值得购买?明白这点很重要!...

近两年,华为手机凭借P系列和Mate系列的优异设计和销量口碑,已经毫无争议地成为了国产品牌高端代表。同时,华为自身也牢牢占据住中国大陆市场份额第一名宝座,在全球名次中以微弱差距排在第三,与第二名的苹果iPhone厮杀激…

Matlab xlim ylim zlim函数

xlim([xl xr]); 用于限定x轴上下限,其中, xl:x轴下限 xr:x轴上限 ylim([yl yr]);zlim([yl yr])同理。 例子 x [1:0.1:10]; y 3*sin(x); subplot(2,1,1); plot(x,y) subplot(2,1,2); plot(x,y); ylim([-1,1]); …

在Myeclipse buildpath 加server lib (server runtime)

使用Myeclipse,将eclipse下的工程复制过来后,发现提示Tomcat 7.0 unbound。缺少Server Runtime。 解决方法如下: 1,File->New->Other->Server->Server(注意在new时,需要勾上Show All Wizards),下一步,选择…

Go--4大基本数据类型之布尔类型

一:布尔类的定义 布尔类型只取值true和false,且布尔类型只占一个字节,多用于逻辑判断 二:使用举例 转载于:https://www.cnblogs.com/louis181214/p/10196338.html

Excel中数字、数值和文本的区别

数字包括文本型数字和数值型数字两种形式,数值型数字可以计算,文本型数字不能计算。 例1:文本型数字不能计算 例2:数值型数字可以计算 数值型数字如果输入大于11位数,则会显示为科学计数法。如果输入001,则…

单片机全局有必要封装_MCU-C程序基本编程规范(转)

为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对单片机编程语言和08编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、…

The selected server is enabled,but is not configured pro

The selectedserver is enabled,but is not configured properly.Deployment to itwill not be permitted until the problem is corrected.Pleasenavigate to the server preference pages and verify the field withthe prompt:tomcat jdk name: 翻译:选定的服务器…

懒惰评估

最近,我正在编写log4j附加程序,并希望在自定义附加程序创建过程中使用logger记录一些诊断详细信息,但是log4j初始化仅在创建附加程序实例后才完成,因此该阶段记录的消息将被忽略。 我感到需要在自定义附加程序中进行延迟初始化&a…

python基础_格式化输出(%用法和format用法)

%用法 1、整数的输出 %o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制 >>> print(%o % 20) 24 >>> print(%d % 20) 20 >>> print(%x % 20) 14 2、浮点数输出 2.1 格式化输出 %f ——保留小数点后面六位有效数字  %.3f,保留…

CSV大文件的处理(以ngsim数据为例):分割、导入与合并

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列&…

python用scrapy爬虫豆瓣_爬虫教程——用Scrapy爬取豆瓣TOP250

最好的学习方式就是输入之后再输出,分享一个自己学习scrapy框架的小案例,方便快速的掌握使用scrapy的基本方法。本想从零开始写一个用Scrapy爬取教程,但是官方已经有了样例,所以还是不写了,尽量分享在网上不太容易找到…

context-param与init-param的区别与作用

<context-param>的作用:web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>2.紧接着,容器创建一个Servl…

如何快速批量修改文件名

文件太多&#xff0c;文件名太乱&#xff0c;希望快速批量修改文件名&#xff0c;以下的两种方法可以帮到你&#xff0c;亲测好用。 方法一 1.选中需要批量修改的文件&#xff0c;如图1 图12.按F2键&#xff0c;输入文件名。如图2. 图23.Enter&#xff0c;效果如图3. 图3方法…