gpt4 book ai didi

ruby - Chef 库或定义?

转载 作者:数据小太阳 更新时间:2023-10-29 06:33:36 26 4
gpt4 key购买 nike

作为 Chef 的新手,我需要根据现有 Recipe 创建库或定义。

这些 Recipe 使用 bash 资源、ruby block 资源(通知另一个 ruby​​ block 资源延迟时间)、再次通知 ruby​​ block 的模板资源等。

最好的方法是什么?库还是定义?

我读到如果我使用定义,我将无法通知定义内的资源,这是否意味着我可以通知不同定义文件中的资源?

我还读到在图书馆中您不能直接使用资源。如果这是真的,我如何使用我的图书馆中的资源?

最佳答案

所以,这是“主要基于意见”,但无论如何我都会回答。这里有 4 个不同的选择:

  1. 定义
  2. LWRP
  3. HWRP
  4. “图书馆”

定义只是一个或多个具有某些参数化的资源的包装器。但是,定义添加到资源集合中。这意味着您不能“通知”或触发定义上的事件。它们仅用于包装和命名 Recipe 中的一系列可重复步骤。

LWRP(轻量级资源和提供程序)是特定于 Chef 的 DSL,它实际上在运行时编译成 HWRP(重量级资源和提供程序)。 LWRP 和 HWRP 都是 Chef 扩展。除了包装一系列可重复的任务外,*WRP 还将在 Chef 中创建一个顶级资源(如 templatepackage),可用于您的 Recipe 和其他 Recipe 的 Recipe 也是如此。

LWRP 和 HWRP 之间的区别实际上是 Ruby。 HWRP 使用成熟的 Ruby 类。如果您不是 Ruby 开发人员,他们可能有点吓人。尽管如此,您应该在编写和 LWRP 之前尝试一下。 LWRP 使用特定于 Chef 的 DSL 来创建资源。在一天结束时,他们编译成(大致)与重量级对手相同的代码。我将在最后链接一些引用资料。您可以访问任一实现中的 Chef 资源以及 run_context。

最后,“图书馆”(注意引号)经常被误解和滥用。它们是 Ruby 代码,被评估为 Ruby,所以它们几乎可以做任何事情。 HWRP 实际上是图书馆的一种形式。有时人们将图书馆当作“ helper ”。他们将使用 best_ip_foraggregate_some_data 等方法创建一个帮助程序模块,然后将该库“混合”(Rubyism)到他们的 Recipe 或资源中以进行干燥。其他时候,可以使用库来“破解”Chef 本身。 partial-search Recipe 就是一个很好的例子。 Facebook talked about how they limited the number of attributes sent back to the server去年也在 ChefConf 上。图书馆确实是一个未定义的领域,因为它们是王国的 key 。

因此,虽然我还没有真正回答您的问题(因为它是基于意见的),但我希望我已经为您提供了有关最佳前进方向的足够信息。请记住,每个基础设施都是一片特殊的雪花,没有正确的答案;只有一个最佳答案。我建议与您的团队分享这些信息并权衡每种方法的利弊。您也可以试试 Chef 邮件列表,人们会给您很多意见。

资源:

关于ruby - Chef 库或定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21725768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com