博客
厨师 vs 木偶
抽象形状抽象形状
加入27,000多个网络安全通讯订阅者

木偶和Chef都取得了长足的进步-可以说,我们早就应该重新审视这两个重磅炸弹。在本文中,我们将重新审视它们的核心组件以及新的生态系统工具和集成,这些工具和集成将继续将它们定位为领先的企业IT自动化平台。

过去曾有人讨论过一些过去的区别因素,例如每个平台各自的声明性/过程性方法和基础编程语言。而且,随着这两种解决方案的功能越来越强大,越来越复杂,上述差异实际上已不那么重要。为了进行比较,我们将重点放在如何解决当今企业面临的IT和持续交付挑战上。

厨师

仅将工具标记为DevOps解决方案并不能做到这一点。它必须解决在建设/管理高速组织中的当代IT挑战,同时促进团队之间的不断改进和协作。工具(作为变革的关键推动力)在管理技术和塑造文化方面都发挥了作用:

“我们使用的工具强化了行为;行为加强了工具。因此,如果您想更改自己的行为,请更改工具。”
–主厨,首席技术官Adam Jacob

厨师 通过将武术用作DevOps(特别是功夫)的隐喻来进一步扩展此概念。以下是Chef的DevOps功夫学校的详细分类:

开发运维 +功夫。资料来源:厨师。

实际上,Chef 15中体现了上面强调的许多原则(例如,收集指标,持续集成和交付,通过相同的工作流程放置应用程序和基础架构)。

厨师特色和亮点

在基本级别上,Chef是用于自动化,配置和配置管理的工具。该平台由以下组件组成:

  • 厨师服务器: 厨师传播和存储系统配置信息和策略(即配方和食谱)的主要中心。 厨师管理控制台是Chef Server的Web用户界面。
  • 厨师客户: 安装在要管理的每个节点上的Chef Client在本地计算机上执行配置任务。
  • 厨师工作站: 允许指定的工作站创作/测试/维护食谱并将其上传到Chef Server。在使用Chef开发工具包时,也会使用工作站。
  • 厨师分析: 一个平台,可提供有关厨师自动化活动的操作和运行历史记录,实时报告以及通知。
  • 厨师超市: 社区贡献的食谱的开源目录

连续交付与厨师自动化

传统的 木偶 vs. 厨师的比较通常将后者描述为对开发人员更友好,Chef的Knife插件体系结构和Chef Developer Kit(Chef DK)等收藏主要归开发人员使用。在2015年的ChefConf活动上,推出了一种新的DevOps工作流程产品:Chef Delivery,这是一组工具,它为平台添加了更多开发人员友好的功能,例如全面的代码库更改历史记录,指标和权限管理。此后,Chef已将这些自动化功能和持续交付功能集成到Chef Automate中,该平台将Chef所有的基础设施自动化工具整合在一起。

厨师 开发运维工作流程。资料来源:厨师。

厨师 Automate的自动化测试和持续集成/交付工具包括共享工作流管道,协作功能和增强的分析等功能,以及与AWS,Azure和Docker的生态系统集成等功能。尽管这些增强功能无疑是对Chef开发人员社区的福音,但Chef的愿望可以说与成为以开发人员为中心的自动化工具无关,而与构建DevOps管道管理的综合平台无关。

厨师 Vault提高了安全性

客户和/或社区自定义设置经常变得如此广泛和不可或缺,以至于他们发现了真正的产品发布方式。 厨师 Vault确实是这种情况,该项目由 Nordstrom 改善平台的固有安全机制。 厨师可以原生存储敏感数据(例如 SSL证书 密钥,数据库密码)存储在加密的“数据袋”(密钥/值对的存储库)中,以确保安全,轻松地访问。但是,对这些数据包的管理是一个乏味且容易出错的过程。 厨师 Vault提供了额外的安全保护层,可以更轻松地管理这些加密数据包。

厨师漏洞

每 常见漏洞和披露(CVE)数据库,厨师共有 3个报告的中等严重性漏洞:

厨师还维护一份持续的安全说明列表,以为客户提供适当的补救准则,以解决平台的安全性缺陷。

厨师网络安全风险简介

厨师安全等级

We'看过厨师'的网站,看看我们是否可以发现任何可能导致 数据泄漏 要么 数据泄露.

毫不奇怪,Chef(一家相对成熟的技术公司)获得了可信赖的B级评分 安全等级 (770/950)。 

SSL / TLS版本不安全,是其最大的风险之一, 中间人攻击。缺乏 DMARC域名系统.

学习更多关于 厨师.io网站的风险因素 要么 免费获得自己的安全等级

木偶

如前所述,与Chef相比,Puppet被认为是一种更多的面向操作和面向sysadmin的解决方案,尽管如此-这些基于角色的区别在每个发行版中都变得越来越不相关。 开发运维的从业人员(包括开发人员和运营人员)都努力为持续集成/交付提供最佳条件。因此,越来越需要根据企业在独特需求下有效地实现这些目标的能力来评估工具。尽管如此,Puppet多年来一直享有明显的先发优势,尽管Chef和Puppet自从IT自动化初期以来就一直是并驾齐驱的市场领导者,但后者拥有更长的商业记录和更大的安装基础。

目前,在版本6.11上,Puppet通常部署在客户端/服务器配置中,受管节点会定期将其配置与服务器同步。客户端将报告(例如,自动化运行的结果,错误/异常)和其他信息发送回服务器,以进行汇总分析和处理。下图是Puppet数据流的基本表示形式:

 

木偶’s data flow
木偶’s data flow. Source: 木偶 Labs.

木偶 features 和 highlights

木偶自动化通过强制执行Puppet Manifests(包含描述系统状态的预定义信息(即资源)的文件)中定义的环境的所需状态来工作。组成Puppet的核心组件如下:

  • 木偶 Server -管理Puppet节点(代理)的中央服务器
  • 木偶 Agent -安装在受管节点上的客户端软件,可与Puppetmaster进行通信和同步
  • 木偶 Enterprise Console -用于分析报告和控制基础架构资源的Web GUI
  • 木偶DB -用于Puppet的数据存储服务,由Puppet生成的数据


其他值得一提的其他关键组件包括MCollective(一个用于支持服务器编排或并行作业执行的框架)和Hiera(一种分层的键/值查找实用程序,用于向Puppet提供特定于节点的配置数据(用于将特定于站点的数据保留在清单中) )。 木偶已将MCollective,Hiera和许多其他开源项目集成到其平台中,以提供关键任务企业基础架构的全面自动化和管理。也可以从以下网站获得许多社区贡献的加载项 木偶 Forge—扩展的开源模块库,用于扩展平台的功能。

 

The 木偶 Enterprise Console
木偶企业控制台。资料来源:Puppet Labs。

Updates to 木偶 Node Manager

木偶的节点管理器支持围绕节点属性创建规则,从而可以更轻松,更有效地进行节点管理。使用节点管理器,可以根据任务而不是名称来管理节点,从而无需手动分类每个节点。新更新包括针对Docker容器,AWS基础设施和裸机的强大配置功能。

Introducing 木偶 Code Manager

自成立以来,Puppet一直是DevOps运动的支柱,并继续满足企业的持续集成/交付要求。 “基础架构即代码”的概念需要使用软件开发最佳实践来管理基础架构配置和供应细节,包括代码审查,版本控制和协作开发等。就像Chef一样,Puppet的平台也不断发展,以适应对管理连续交付管道的综合机制的不断增长的需求。 

自Puppet Enterprise 3.8起可用,Puppet Code Manager提供了一种一致,自动化的方式来在连续交付框架中更改,查看,测试和升级Puppet代码。基于R10K(一种通过与版本控制系统接口来部署Puppet环境和模块的通用工具集),Puppet Code Manager通过使其成为可测试的编程过程来加速基础结构的部署。通过与Git轻松集成以进行版本控制,Puppet平台的最新功能进一步模糊了软件和基础架构之间的界限。

软件定义网络(SDN)

SDN是一种新的联网范例,可将网络控制和转发与物理基础架构分离,从而可以在快速变化的环境中灵活地管理网络资源。就像云计算使IT部门可以按需快速启动计算和存储实例一样,SDN用动态调配的网络服务和资源代替了严格的(有时是手动的)网络操作。

这种新的网络模型与Puppet倡导的“基础架构即代码”相符。因此,该公司已经采取了重要的战略举措和合作伙伴关系来支持SDN。例如,Puppet Labs最近宣布与SDN交换机的领先开发商Arista Networks建立合作关系,以为其供应商的SDN设备线提供自动化支持。一旦SDN技术得到广泛采用,这种合作伙伴关系和其他类似的合作伙伴关系(例如Cumulus Networks,Dell,Cisco)将使Puppet在竞争厂商中享有优势。

木偶 security 和 漏洞

没有软件是没有漏洞的,Puppet当然也有自己的漏洞。公司积极维护资料库 of 木偶 security disclosures,具有完整的 报告的漏洞列表 可通过CVE数据库获得。截至撰写本文时,79 vulnerabilities 在Puppet的整个生态系统中都有记录,平均严重等级为中,大多数适用于开源Puppet和Puppet Enterprise。 厨师不会为其所有产品维护CVE数据库。他们发布的唯一CVE产品Chef包含 3 CVEs from 2012.

木偶 cybersecurity risk profile

木偶'的总体风险评分,由 Upguard网络安全评级 得分为A(903/950),远高于厨师's B rating.

但是,关于配置错误,细节在于细节,Puppet正在向自己和客户开放 电子邮件欺骗 动力的 网络钓鱼鱼叉式网络钓鱼 SPF过滤功能强大的广告系列。

像厨师一样't utilize 域名系统

学习更多关于 puppet.com网站的风险因素 要么 免费获得自己的安全等级

厨师 vs 木偶:DSL的差异和易用性

尽管Chef和Puppet在设计上比完全不同的配置管理工具(如Ansible)更加接近。第一个主要区别是Ansible之类的工具依赖于无代理架构,而Chef和Puppet都使用基于主代理或puppet-slave的基于代理的架构。对于Ansible,配置管理更改是通过SSH从任何工作机传播的,而不是通过节点上的客户端传播的。与其他工具的第二个主要区别是使用构建了Chef和Puppet的Ruby编程语言。但是,在日常使用中,您会注意到Chef和Puppet之间的细微差别,这在很大程度上要归功于每个平台使用独特的领域特定语言来自动进行配置管理。 

首先,Chef DSL在语法上看起来像Ruby,实际上是标准的Ruby DSL,其中添加了特殊功能和关键字,以处理包括Linux,Windows等在内的OS平台上的基础结构和应用程序配置。由于Chef DSL允许您在调用Chef特定功能和使用Chef特定关键字的同时编写普通的Ruby代码,因此对于那些定期使用Ruby进行工作的团队来说,学习曲线较低。例如,让一个Ruby开发人员与Chef一起运行并运行可能会花费不到一个下午的时间,并且需要进行一些Google的快速搜索。 木偶并非如此,它使用的是DSL,尽管声明性,但它偏离了标准Ruby语法。

要查看这两个工具的工作原理,请考虑以下安装Apache Web服务器的代码示例。

厨师:

包"apache2" do

  动作:安装

结束

 

木偶:

class 阿帕奇 {

  包装{'apache':

    名称=> $apachename,

    确保=> present,

  }

}

 

当您查看简单的用例时,DSL差异是肤浅的,但它们会导致不同的效果。例如,Chef往往非常灵活,因为您可以使用标准Ruby帮助程序和函数来完成所需的任何事情。 Ruby的所有表达能力都可以使用。这既有优点也有缺点,特别是您引入了不必要的复杂性,这可能会使厨师食谱的维护者难以解开。  

木偶的DSL具有使大多数任务保持简单的优势,并且通常有一种确定的做事方式。缺点是,如果您的团队要处理复杂的配置,您将发现自己正在与DSL施加的约束作斗争。需要注意的是,Chef的DSL对Ruby开发人员很友好,而Puppet的DSL更友好并且更接近系统管理员,后者可能更喜欢配置语言,而不是XML或其他声明性配置文件。这样的观点仍然成立,不过,如上所述,两个平台在很大程度上都完成了基本相同的任务。  

厨师 vs 木偶:微服务和容器化支持

容器化和诸如Docker和Kubernetes之类的工具的普及已经影响了应用程序的部署方式。随着应用程序从单片架构发展到颗粒微服务,传统配置管理工具的作用受到质疑。毕竟,诸如Google Kubernetes Engine和Amazon ECS之类的容器化平台附带了用于在云中配置容器的工具。 

厨师已经接受了容器化并构建了工具来支持容器化应用程序的构建和部署。它的开源Chef Habitat工具可在以下位置获得: Github,为您提供了一个完整的应用程序生命周期管理工具,该工具可与Docker,Kubernetes和其他容器化工具很好地配合使用。栖息地的多功能性使其可以通过使用plan.sh文件来提供和构建传统应用程序(例如旧版Java或Python应用程序),就像粒状微服务一样容易,该文件提供了构建应用程序所需的所有详细信息。栖息地与Jenkins等传统的devops工具很好地集成在一起,并部署到包括Red Hat Linux,其他Linux发行版,Mac,Windows和Unix在内的大量平台上。生境中可用的软件包导出格式将在将来扩展,但已经包含了Docker。完整列表功能:

  • 码头工人 
  • ACI 
  • 梅索斯
  • 柏油
  • 铸造厂 

木偶还具有集成机制,使系统管理员可以轻松管理和部署容器化应用程序。 木偶有多个受支持的模块用于安装和管理Docker,包括下载和配置Docker映像。的 latest version of the 木偶 码头工人 module Puppet Forge中可用的功能可使用Puppet代码运行和管理Docker容器。 木偶的Docker模块支持以下操作系统:

  • 红帽Linux
  • 视窗
  • 的Ubuntu 
  • 德比安 
  • CentOS的

Test automation for 厨师 和 木偶 code

良好的代码惯例包括及早且经常测试您的代码,以及在整个技术行业中普遍采用的测试驱动开发。诸如Chef和Puppet之类的devops工具促进了基础架构配置向代码基础架构(IaC)的迁移,这意味着运行轻量级测试以验证将在基础架构中进行的任何更改的范围更大。  

木偶的开发套件PDK提供了用于单元测试以及验证Puppet代码文件的语法的工具,包括用于跟踪JSON格式的所有模块元数据的meta.json文件。 木偶依靠包括RSpec和Cucumber在内的标准工具来测试您的Puppet代码。  

另一方面,Chef支持上述所有内容,还包括用于测试基础结构代码的正确性和合规性的强大工具。这些工具中的第一个是ChefSpec,该框架扩展了RSpec的功能,可以在模拟的Chef Infra Client运行中测试您的食谱。大量示例可以在 厨师Spec Github存储库 帮助您入门。 

厨师食谱的另一种综合测试工具是 厨房,它可以使用驱动程序插件体系结构对Chef食谱和基础结构代码进行集成测试,该驱动程序插件体系结构可以在Vagrant和Docker等虚拟化和容器化工具以及云平台上测试您的代码。   

厨房甚至支持由其他配置管理工具(例如Ansible和Saltstack)运行的集成测试配置管理代码。对于这些用例,需要特定的供应商,这些供应商可以在Github上作为开源库使用。 厨师集成测试和法规遵从性测试生态系统比Puppet提供的功能要强大得多。 厨师的生态系统还包括ChefAutomate,ChefAutomate是一种企业级工具,可通过单个仪表板自动执行安全合规性并管理基础架构的自动化。

When to choose 厨师 over 木偶

现在,我们已经了解了这两个平台是如何在后台运行的,以及它们如何完成许多相同的事情,这就是选择适合您团队需求的合适平台的方法。与其他环境相比,一种工具更适合一种环境和一组需求,在为团队做出选择之前,您必须认真考虑这一点。  

首先,您可以在要考虑复杂配置管理方案的环境中选择Chef,例​​如在云中和虚拟化平台上部署到多个目标。 厨师的设计在需要Ruby编程语言的全部功能来编写食谱的场景中发挥了很好的作用,并且几乎没有约束以某种方式做事。 

厨师生态系统,尤其是Chef Habitat,已涵盖构建应用程序以使其在几乎您所考虑的任何系统上运行的内容,这将有助于简化Docker或Kubernetes的容器化工作流。 厨师对开源社区和企业可能使用的其他工具(例如Kubernetes,Nagios,Docker等)提供了出色的支持。集成可用于Rackspace等云平台,而Amazon EC2则通过AWS OpsWorks for 厨师的自动服务集成了Chef服务器,从而进一步发展了。作为其开源承诺的标志,2019年4月,  厨师的首席执行官在博客中宣布,厨师 将使其所有产品开源。一旦您的团队精通Chef,您将通过在其广泛的开源生态系统中使用Chef的专业知识来继续收获收益。

When to choose 木偶 over 厨师

木偶以其声明性风格吸引了那些希望使用可靠且易于使用的工具进行配置管理的组织。与Chef之类的工具相比,这种哲学上的差异是显而易见的,Chef同样强大,但是却需要更多的编程工作,包括使用纯Ruby和Chef DSL。对于非Ruby开发人员,使用Chef的决定使学习曲线更加陡峭。声明式的配置管理风格具有众多优势,包括易于维护和在团队中保持一致的配置实施。 

木偶与其他声明式CM工具(例如Ansible)具有这些优点,后者使用YAML格式以声明式样式编写配置手册。如果您的devops团队由可能更熟悉声明性配置文件的大量系统管理员组成,则使用Puppet更适合您的团队。与Chef相比,Puppet是一个更为自以为是的配置管理工具,可以说,Puppet应该在非常大的团队中更好地工作,在这种团队中,Puppet通过设计对代码样式施加了内置约束。  

概要

厨师和Puppet通过启用Chef Delivery和Puppet Code Manager等新功能,继续响应其支持DevOps的企业的需求扩展其自动化平台,从而简化了持续集成/交付流程。两家供应商都在建立合作伙伴关系,这种合作关系最终可以定义(正如Chef所说的)特定组织所属的DevOps学校。过去,这两个 与微软合作 要将其平台与Azure集成在一起,Puppet(并不陌生)是早期与领先的SDN供应商建立关键联盟的伙伴,以便随着技术的发展而将其定位于有利位置。因此,如果您的组织计划采用SDN,那么Puppet在这方面可能会更适合。

如今,安全性已成为整个企业范围的关注点,在评估技术时应考虑到安全性。 厨师在使用Chef Vault改善平台安全性方面取得了长足进步,尽管与Puppet的79相比,它发布的3个CVE漏洞肯定显得苍白。有趣的是,Puppet Labs重播了针对诸如ruby之类的供应商软件的CVE,而Chef却没有,例如Ruby作为核心组件。令人难以置信的是,自2012年以来,Chef还没有在其任何软件中发现漏洞。

简而言之,作为企业解决方案,这两个IT自动化平台已经非常成熟。我们've重点介绍了Chef 和 木偶的一些关键属性和优点-选择正确的选项将确定每个平台的核心竞争力,并确定其中哪些符合您组织的独特需求。无论选择哪种自动化平台,UpGuard都可以补充其中任何一种解决方案,从而通过高级功能完善DevOps工具链 漏洞评估 和监控,以确保在连续交付过程的每个步骤中都体现出安全性(取决于质量)。 

一个很好的经验法则是,Puppet就像编写配置文件,而Chef就像编写节点的控制程序。如果您或您的团队在系统管理方面有更多经验,那么您可能更喜欢Puppet,并且如果您'对于大多数开发人员而言,Chef可能是最合适的。 

免责声明

网络安全风险概况最后更新于2019年12月12日。 

虽然我们致力于代表每个公司'准确地了解风险状况,此博客不是实时风险监控的场所,因此以上信息应作为时间点快照。

木偶 vs 厨师 Infographic

木偶 vs. 厨师 Infographic
自由

白色UpGuard徽标
可供下载的UpGuard免费资源
学到更多

下载我们的免费电子书和白皮书

关于网络安全和供应商风险管理的见解。
白色UpGuard徽标
电子书,报告& Whitepapers
可供下载的UpGuard免费资源
UpGuard客户支持团队UpGuard客户支持团队UpGuard客户支持团队

观看UpGuard的实际应用

与我们的一位网络安全专家预订免费的个性化入职电话。
抽象形状抽象形状

相关文章

了解有关网络安全的最新问题的更多信息。
传送图标

注册我们的时事通讯

每周在收件箱中获取最新精选的网络安全新闻,漏洞,事件和更新。
抽象形状抽象形状
免费即时安全评分

您的组织有多安全?

索取免费的网络安全报告,以发现您的网站,电子邮件,网络和品牌上的主要风险。
  • 检查图标
    您可以立即采取行动的即时见解
  • 检查图标
    13个风险因素,包括电子邮件安全,SSL,DNS运行状况,开放端口和常见漏洞
网站安全扫描结果网站安全扫描等级抽象形状