- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
作为 Chef 的新手,我需要根据现有 Recipe 创建库或定义。
这些 Recipe 使用 bash 资源、ruby block 资源(通知另一个 ruby block 资源延迟时间)、再次通知 ruby block 的模板资源等。
最好的方法是什么?库还是定义?
我读到如果我使用定义,我将无法通知定义内的资源,这是否意味着我可以通知不同定义文件中的资源?
我还读到在图书馆中您不能直接使用资源。如果这是真的,我如何使用我的图书馆中的资源?
最佳答案
所以,这是“主要基于意见”,但无论如何我都会回答。这里有 4 个不同的选择:
定义只是一个或多个具有某些参数化的资源的包装器。但是,定义未添加到资源集合中。这意味着您不能“通知”或触发定义上的事件。它们仅用于包装和命名 Recipe 中的一系列可重复步骤。
LWRP(轻量级资源和提供程序)是特定于 Chef 的 DSL,它实际上在运行时编译成 HWRP(重量级资源和提供程序)。 LWRP 和 HWRP 都是 Chef 扩展。除了包装一系列可重复的任务外,*WRP 还将在 Chef 中创建一个顶级资源(如 template
或 package
),可用于您的 Recipe 和其他 Recipe 的 Recipe 也是如此。
LWRP 和 HWRP 之间的区别实际上是 Ruby。 HWRP 使用成熟的 Ruby 类。如果您不是 Ruby 开发人员,他们可能有点吓人。尽管如此,您应该在编写和 LWRP 之前尝试一下。 LWRP 使用特定于 Chef 的 DSL 来创建资源。在一天结束时,他们编译成(大致)与重量级对手相同的代码。我将在最后链接一些引用资料。您可以访问任一实现中的 Chef 资源以及 run_context。
最后,“图书馆”(注意引号)经常被误解和滥用。它们是 Ruby 代码,被评估为 Ruby,所以它们几乎可以做任何事情。 HWRP 实际上是图书馆的一种形式。有时人们将图书馆当作“ helper ”。他们将使用 best_ip_for
或 aggregate_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/
我有一套用于配置 Web 和 SQL 服务器的说明书,它们目前在我们的持续部署管道中使用。我希望开发人员能够使用相同的 Recipe 来设置他们的本地开发环境,而无需在 Chef 服务器上注册每台开发
我是 Chef 的新手,并且已经成功配置了我的三个节点 - 工作站、客户端和服务器。 Chef 文档提到了一个 Chef “repo”,其内容看起来与 Chef 服务器非常相似。两者有什么区别,或者它
我正在使用Solo Solo并尝试为Oh My Zsh安装食谱!这导致这个麻烦的错误: Failed to read the private key /etc/chef/client.pem: Err
我正在使用 Vagrant 和 Chef-solo 来测试我的食谱,但我有一个需要厨师服务器的特定食谱(它使用搜索)。我希望我的默认配方如下所示: include_recipe 'some_recip
我在计算机上设置了一个 Chef 客户端,以便使用 learnchef.com 提供的实验室进行练习。 我现在如何将我的 Chef 客户指向我们的内部 Chef 服务器(我们有 2 个非生产和生产服务
我有一个现有的 Chef 服务器设置,其中注册了大约 300 个节点。现在我想转移到另一个具有更新版本的 Chef 服务器。但是我不确定如何将所有节点和其他数据从较旧的 Chef 服务器迁移到较新的服
我正在将我的 Recipe 从 Chef 版本 12.11.18 升级到 13.6.4。某些版本 13 的特定说明在 Chef 版本 12 中不起作用,反之亦然。我现有的服务器仍然使用 Chef Cl
我正在测试一本食谱,其中一个 LWRP 似乎不包含我期望的属性。我需要查看在节点上设置的属性列表。有没有办法在 Vagrant 厨师独奏节点中做到这一点? 我用 kitchen converge它使用
我已经将 Chef 文件从我的 Chef 服务器复制到本地客户端节点,在 ~/.chef 下,我在 ~/.chef/environments 下有所有环境,例如development.rb, prod
对厨师来说完全陌生......我们曾经从 ppa 存储库安装 elasticsearch 但现在我想从头开始构建它(存储库不再更新)每次我更改我的 attributes/default.rb 中的版本
olr以下情况我该如何处理? /etc/init.d/chef-server-webui start * Starting chef-server-webui ~ In 15468 ...fa
尝试在我的 Oracle Linux Box 上安装 Chef。完全按照以下说明进行操作后,我到达了以下位置: 运行 Chef 独奏: (在网址中): http://wiki.opscode.com/
很明显,每个环境都使用一个策略组(如开发、暂存或生产,如 they do here)。然而,当涉及到处理一些与环境相关的属性时,例如名称或种子地址,与旧的角色/环境布局相比,使用策略文件处理起来非常棘
我有一本安装 nginx 并安装自定义 nginx.conf 文件的 Chef Recipe 。基本上就是 Opscode 上的 Cookbook,使用 cookbook_file 来安装文件。 如果
试图在谷歌云引擎上引导一个节点,但我所有的尝试都以失败告终代码 knife bootstrap ipaddress -x raid -i ~/.ssh/google_compute_engine --
我需要创建一个所有者为“testuser”的目录树。 但是,如果我指定“/foo/bar/baz”,则只有在“testuser”、“/foo”和“/foo/bar”下创建的“baz”归“root”用户
也许我错过了文档中的某些内容,但是在阅读了在多个地方定义时使用属性的顺序后,我不明白 中的属性设置的位置节点级别 进入等式 在可以设置和覆盖属性的 1 到 15 个级别中,它提到了配方、环境、角色、属
如何通过厨师将多个成员添加到组中? 我这样试过,但它失败了。 group "git" do action :modify members "foo, bar" append true en
Chef-如何获取命令输出到Ruby变量 我有以下情况,我在grep中获取文件 command "ls /filder1 | grep .txt" grep提供文件名/文件名的输出(如果存在)。 我想
我一直在尝试使用本指南在我的 CentOS 6.5 机器上安装 Chef 服务器 (chef-server-core-12.1.0-1.el6.x86_64.rpm):http://docs.chef
我是一名优秀的程序员,十分优秀!