部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric

Chef,Puppet,Ansible,SaltStack和Fabric的优缺点是什么?

如今,在生产环境中工作通常意味着在全球范围内进行连续部署和分布环境。 当您的基础架构是分散式的且基于云的,并且您要在大量相同的服务器上频繁部署大量相同的服务时,拥有一种使所有内容的配置和维护自动化的方法便是一大福音。 部署管理工具和配置管理工具就是为此目的而设计的。 它们使您能够使用配方,剧本,模板或任何术语来简化整个环境中的自动化和编排,以提供标准,一致的部署。

在此空间中选择工具时,要牢记一些注意事项。 一种是该工具的模型。 有些需要主客户端模型,该模型使用集中控制点与分布式计算机进行通信,而另一些则可以或确实可以在更本地的级别上进行操作。 另一个考虑因素是环境的构成。 某些工具使用不同的语言编写,并且对特定操作系统或设置的支持可能会有所不同。 确保您选择的工具能够与您的环境完美结合,并且团队中的特殊技能可以为您节省很多麻烦。

1. Ansible

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric Ansible是一种开放源代码工具,用于将应用程序部署到远程节点并以可重复的方式置备服务器。 它为您提供了一个通用的框架,用于使用推送模型设置来推送多层应用程序和应用程序工件,尽管您可以根据需要将其设置为主客户端。 Ansible建立在剧本的基础上,您可以将其应用到各种用于部署应用程序的系统上。

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric

Ansible塔式仪表板

何时使用:如果快速且轻松地启动和运行对您很重要,并且您不想在远程节点或受管服务器上安装代理,请考虑使用Ansible。 如果您的需求或重点更多地放在系统管理员方面,那是很好的。 Ansible专注于简化和快速,因此,如果您最关心这些问题,请试一试。

价格:免费的开源版本,Ansible Tower的付费计划起价为每年5,000美元(最多可提供100个节点)。

优点:

  • 基于SSH,因此不需要在远程节点上安装任何代理。
  • 使用YAML易于学习。
  • 剧本结构简单,结构清晰。
  • 具有变量注册功能,使任务可以为以后的任务注册变量
  • 比其他一些工具更简化的代码库

缺点:

  • 不如基于其他编程语言的工具强大。
  • 通过DSL来执行其逻辑,这意味着要经常检查文档,直到学习为止
  • 即使是基本功能,也需要变量注册,这可以使更简单的任务变得更复杂
  • 内省很差。 很难看到剧本中变量的值
  • 输入,输出和配置文件的格式之间不一致
  • 有时会以性能速度挣扎。

2.厨师

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric Chef是用于配置管理的开源工具,其用户群侧重于开发人员。 Chef作为主客户端模型运行,需要一个单独的工作站来控制主服务器。 它基于Ruby,您编写的大多数元素都使用纯Ruby。 Chef的设计是透明的,并且要遵循给出的说明,这意味着您必须确保自己的说明清晰。

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric

厨师仪表板

何时使用它:在考虑Chef之前,请确保您熟悉Git(因为它是配置所必需的)和Ruby(因为您必须在其中编写)。 Chef非常适合以开发为重点的团队和环境。 对于寻求针对异构环境的更成熟解决方案的企业而言,这很好。

价格:免费的开放源代码版本,标准计划和高级计划按月每个节点定价,大批量订购时分别降至$ 6 /节点/月或$ 6.75 /节点/月。

优点:

  • 丰富的模块和配置配方集合。
  • 代码驱动的方法为您提供了对配置的更多控制和灵活性。
  • 围绕Git提供强大的版本控制功能。
  • “刀”工具(使用SSH从工作站部署代理)减轻了安装负担。

缺点:

  • 如果您还不熟悉Ruby和过程编码,则学习曲线会很艰难。
  • 这不是一个简单的工具,它可能导致庞大的代码库和复杂的环境。
  • 不支持推送功能。

知道何时以及为什么生产服务器崩溃: Takipi无需依赖日志文件即可检测到新的错误和峰值。 关键信息通过现有的DevOps基础架构实时路由到您的团队。 放大每个错误,以查看错误发生时的确切状态。 有关更多详细信息, 请参见此 博客文章 ,或注册Takipi入门!

3.面料

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric Fabric是基于Python的工具,用于在应用程序部署中简化SSH。 它的主要用途是在多个远程系统上运行任务,但也可以使用插件进行扩展,以提供更多高级功能。 Fabric将配置您的系统,执行系统/服务器管理,并自动部署您的应用程序。

何时使用:如果您只是刚开始部署自动化领域,那么Fabric是一个很好的起点。 如果您的环境至少包含一点Python,它将很有帮助。

价格:免费

优点:

  • 擅长部署以任何语言编写的应用程序。 它不依赖于系统架构,而是依赖于OS和程序包管理器。
  • 比该领域的其他一些工具更容易部署
  • 与SSH广泛集成,用于基于脚本的精简

缺点:

  • 结构是单点故障设置(通常是在其上运行部署的计算机)
  • 使用推送模型,因此不像该领域的其他一些工具那样适合连续部署模型
  • 虽然它是用于以大多数语言部署应用程序的出色工具,但它确实需要运行Python,因此对于Fabric,您必须在环境中至少有一些Python。

4.木偶

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric Puppet是成熟的配置管理领域中长期存在的工具之一。 它是一个开源工具,但是考虑到它已经存在了多久,它已经过严格的审查,并已部署在某些最大和最苛刻的环境中。 Puppet基于Ruby,但是使用更接近JSON的自定义域脚本语言(DSL)来在其中工作。 它作为主客户端设置运行,并使用模型驱动的方法。 Puppet代码设计是一个依赖关系列表,根据您的设置,它可以使事情变得更容易或更混乱。

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric

Puppet Enterprise仪表板

何时使用:如果稳定性和成熟度对您来说是关键因素,则Puppet是一个不错的选择。 对于具有异构环境和DevOps团队技能的大型企业来说,这是个好选择。

价格: Puppet提供免费的开源版本或付费的商业企业版本,每年每个节点运行112美元,并有批量折扣。

优点:

  • 通过Puppet Labs建立完善的支持社区。
  • 它具有最成熟的界面,几乎可以在所有OS上运行。
  • 简单的安装和初始设置。
  • 此空间中最完整的Web UI。
  • 强大的报告功能。

缺点:

  • 对于更高级的任务,您将需要使用基于Ruby的CLI(这意味着您必须了解Ruby)。
  • 对纯Ruby版本(而不是使用Puppet定制DSL的版本)的支持正在缩减。
  • 由于DSL和不注重简单性的设计,Puppet代码库可能会变得庞大,笨拙,并且难以为组织中的新人员提供更高的规模。
  • 与代码驱动的方法相比,模型驱动的方法意味着更少的控制。

5.盐堆

部署管理工具:Chef,Puppet,Ansible,SaltStack和Fabric SaltStack (或Salt)是基于CLI的工具,可以将其设置为主客户端模型或非集中模型。 Salt基于Python,提供了与客户端通信的push方法和SSH方法。 Salt允许对客户端和配置模板进行分组,以简化对环境的控制。

何时使用:如果可扩展性和弹性非常受关注,则Salt是一个不错的选择。 由于它的可用性,对系统管理员来说是一件好事。

价格:免费的开放源代码版本,以及一个基于每年每节点订阅量的SaltStack Enterprise版本。 具体价格未在其网站上列出(只是“与我们联系”链接),但其他人报告的起价为每个节点每年150美元。

优点:

  • 完成设置阶段后,即可轻松组织和使用。
  • 他们的DSL功能丰富,逻辑和状态并不需要。
  • 输入,输出和配置非常一致–所有YAML。
  • 内省非常好。 很容易看到Salt中发生了什么。
  • 强大的社区。
  • 具有奴才和层次结构层的主模型具有高可伸缩性和弹性。

缺点:

  • 难以设置和吸引新用户。
  • 在入门级理解文档非常困难。
  • Web UI比该领域的其他工具的Web UI更新且不完整。
  • 对非Linux操作系统的支持不是很好。

Ansible,Chef,Fabric,Puppet,SaltStack

您使用哪种配置管理或部署自动化工具将取决于您的需求和环境偏好。 Chef和Puppet是一些较老的,更成熟的选项,使其适合于重视成熟度和稳定性而不是简单性的大型企业和环境。 Ansible和SaltStack是那些在不需要支持古怪功能或大量OS的环境中工作时寻求快速,简单解决方案的人的理想选择。 织物对于较小的环境以及寻求更低起升和入门级解决方案的环境来说是一个很好的工具。

翻译自: https://www.javacodegeeks.com/2015/08/deployment-management-tools-chef-vs-puppet-vs-ansible-vs-saltstack-vs-fabric.html