当前位置: 首页 > 科技观察

如何选择自动化部署工具?SaltstackVSAnsible

时间:2023-03-14 18:24:51 科技观察

在众多自动化部署工具中选择选择题的时候,相信很多运维都会纠结。选择哪一个更好?现在我来说说。希望看完这篇文章,大家心中都有了答案。如果不是,请再读一遍,哈哈,术语Salt和Ansible最初都是作为执行引擎构建的。也就是说,如果需要,它们允许在一个或多个远程系统上并行执行命令。Ansible支持在多台计算机上执行任意命令行命令。它还支持执行模块。Ansible模块基本上是以某种Ansible友好的方式编写的Python模块。大多数标准Ansible模块是等效的。这意味着您告诉他们您希望系统处于的状态,并且模块会尝试使系统看起来像那样。Ansible有Playbooks的概念。Playbook是一个文件,它为一组主机定义了一系列模块执行。剧本可以改变主机模块的执行方式。这允许协调多台机器,例如在升级应用程序之前将它们从负载均衡器中移除。Salt有两种类型的模块;执行模块和状态模块。执行模块是简单执行某些操作的模块,可以是命令行执行或下载文件。状态模块更像是Ansible模块,其中参数定义状态,然后模块尝试实现最终状态。一般来说,状态模块使用执行模块来完成它们的大部分工作。使用状态执行模块执行状态模块。状态模块还支持在称为SLS文件的文件中定义状态。哪些状态适用于哪些主机在top.sls文件中定义。Playbook和SLS文件(通常)都是用YAML编写的。作为旁注,我想指出远程执行引擎对于在多台机器上启动特定操作等任务非常有用。StructuralSalt围绕一个SaltMaster和多个在启动时连接到该主节点的SaltMinion构建。通常,命令是在主命令行上发出的。Master然后将这些命令发送给Minions。最初,Minion发起一个包含加密密钥交换的握手,之后它们有一个持久的加密TCP连接。因此可以快速到达Minions。还缓存了各种数据以加快执行速度。支持用于通信的ZeroMQ库。Salt还支持使用SSH的ZeroMQ,而不是使用SaltSSH。但是请注意,它是Alpha软件(我还没有尝试过)Ansible是无主从的,使用SSH作为其主要通信层。这意味着速度较慢,但??也可能更容易运行安装程序和测试Ansible剧本,因为没有主从。有人说它也更安全,因为它不需要额外的服务器应用程序。您可以在下面的“安全”部分了解更多相关信息。Ansible还支持ZeroMQ版本,但需要初始SSH连接才能进行设置。我试过了,老实说,我没有看到明显的加速。我觉得可能是Playbook越大,host越多,效果越明显。要枚举机器,我建议您使用AnsibleInventory文件,它基本上包含按组分组的主机列表,并且还具有要添加到组或单个主机的属性。您可以有多个库存文件,例如,一个用于暂存,一个用于生产。结构简单明了。CommunityAnsible:项目的其余部分似乎不像MichaelDeHaan的单人秀那样是社区的努力。好消息是所有问题都会得到相应的回答。到目前为止,Salt已被证明是一个更受欢迎的社区。问题可能需要大约4天才能得到解答,但似乎大多数问题最终也会得到跟进。我的明确印象是Salt在受欢迎程度和协作方面拥有更成熟的社区。速度虽然您可能认为当您只有几台服务器时速度并不重要,但我认为您错了。能够快速迭代总是很重要的。缓慢的开始会让你慢下来。Ansible始终使用SSH来启动连接。太慢了,它的ZeroMQ实现(如前所述)确实有帮助,但初始化仍然很慢。Salt默认使用ZeroMQ,速度很快。如前所述,Salt可以缓存文件以便更快地重新执行。编排Ansible和Salt都支持编排。我想说编排规则通常更容易获得Ansible的概览。基本上,一个Playbook被分成任务组,每个组匹配一组主机(或一组主机)。每组按顺序和时间顺序执行。任务的执行顺序也是如此。Salt支持事件和事件监控。这意味着Salt执行可以触发另一台计算机上的事件。Salt的执行引擎还可以开启监控等功能,未来的发展会很有趣。Ansible在这里获胜是因为它的简单性。Salt之所以出色,是因为它能够持续对集群变化做出反应。Salt和Ansible都支持在服务器窗口上执行任务。这对于确保服务始终可用很有用。安全Ansible使用SSH进行传输。SSH是经过测试的协议。只要正确配置SSH服务器,我相信大多数人会认为SSH客户端是安全的。Ansible还可以轻松地将多个非根用户连接到单个主机。如果您对以root身份运行的进程非常挑剔,您应该评估Ansible。也就是说,Ansible支持使用sudo来执行其模块。Salt使用AES实现和密钥处理,这需要安装Minion。它为此使用PyCrypto包。安全性相当容易维护。同样重要的是要注意,Salt默认以root身份运行其Master和Minions。这可以更改,但是如果您不是root用户,显然很难安装Debian软件包等。我强烈建议,对于主服务器,可以将其配置为允许非根用户执行该salt命令。可审计性在谈到安全性时,我也认为可审计性很重要。在这里,Salt是大赢家。Salt执行的每一次执行都会在主服务器上保存X天。这使得调试变得容易,而且还可以查看是否发生了异常情况。Ansible绝对很容易在这里部署。无需部署。当然Salt支持SSH,但是文档主要采用ZeroMQ。但是,SSH仍然很慢......设置Minion的好处之一是它们是连接到主节点的Minion。这使得引导大量新机器变得快速和容易。Saltbootstrap脚本非常有用,使引导变得轻而易举。它处理许多不同的分布并且有据可查。学习曲线Ansible在这里胜出。更容易学习和理解。主要是因为除了设置一些环境变量并开始执行你的剧本之外别无他法。Salt可以在无主模式下运行。这使得启动和运行更容易。但是,出于生产(和稳定性)的原因,我建议启动并运行实际的Master。升级升级Salt取决于它是如何安装的。对于基于Debian的发行版,有一个apt存储库,其中存储了最新的Debian软件包。所以升级很简单apt-getupgrade。对于Ubuntu,有一个PPA。这两个存储库都得到积极维护。升级Ansible更简单。您需要做的就是gitfetch&&gitcheckout。文档从文档开始,这两个项目都包含启动和运行、开发模块和配置设置所需的所有信息。Ansible历来拥有比Salt更好的文档结构。也就是说,最近在构建Salt文档方面付出了很多努力。结论Ansible的优势Ansible无代理部署和通信CLI支持几乎所有的编程语言使用在Linux发行版中无处不在的Python使用SSH/SSH2出色的安全性额外的塔式仪表板允许对节点/资源进行可视化管理(在商业版本中可用)缺点是有时容易出现性能问题缺乏内省(即查看Playbook变量值)Salt优点由于多主机功能,可快速扩展,使用Minion非常有弹性和高效提供比Ansible更多的选择和灵活性,但没有GUI(目前正在开发中)缺点迫使用户学习Python或PyDSL无GUI小型部署不如无代理通信高效对我而言,Ansible是对自动化服务器配置和部署的出色介绍。它很容易启动和运行,并且有很好的文档。展望未来,Salt的可扩展性、速度和架构都很好。对于云部署,我发现Salt架构更合适。以后我会毫不犹豫地使用Salt。总而言之,在做出决定之前,您应该调整两个项目。它们的设置和测试速度相当快。至此,希望你心里有了答案。