指定与 Chef Solo 一起运行哪些食谱

2024-03-26

我正在使用 Chef-solo 在本地测试我的食谱,但我希望能够只运行我正在测试的食谱。目前,chef-solo 似乎将运行在solo.rb 中指定的cookbooks 目录中的所有cookbook。我已经在 json 属性文件中指定了运行列表,并在 solo.rb 中指定了 json 文件的位置,但这似乎没有帮助。它至少解析所有其他食谱的属性,因为我有一个不适用于我的本地配置,并且整个运行失败。

到目前为止,我找到的最佳解决方案是将测试所需的说明书移至不同的目录,并在 solo.rb 中指定该目录。有更好的方法吗?


Update:chef-solo 不再是与 Chef-client “独立”的工具。来自文档 https://docs.chef.io/chef_solo.html:

Chef-solo 是一个命令,它以不需要 Chef 服务器的方式执行 Chef-client 来聚合说明书。 Chef-solo 使用 Chef-client 的 Chef 本地模式,并且不支持 Chef-client / 服务器配置中存在的以下功能

此更改实施于厨师版本12.11 https://discourse.chef.io/t/chef-client-12-11-18-released/8649,它满足社区 RFC https://github.com/chef/chef-rfc/blob/master/rfc031-replace-solo-with-local-mode.md。该版本于 2016 年 6 月 8 日发布。下面描述的旧行为(尽管是 4 年前的此时)可通过--legacy-mode论证chef-solo.

有关 Chef Solo 的最新信息,请阅读官方文档 https://docs.chef.io/chef_solo.html

我原来的答案如下:

厨师(独奏或客户端)不会“运行”所有食谱。

It loads以下目录中的所有说明书的 Ruby 文件,按以下顺序:

  • 库/*.rb
  • 提供商/*.rb
  • 资源/*.rb
  • 属性/*.rb
  • 定义/*.rb

然后,它加载节点扩展运行列表中的所有配方。和chef-solo,这来自提供的 JSON 文件-j,或者可以在属性文件中完成 - 但后者已被弃用且不推荐。

扩展运行列表中包含的任何食谱include_recipe也已加载。 Chef 通过将菜谱评估为 Ruby 代码来加载菜谱。当它遇到它识别为资源或定义的 ruby​​ 代码时,它会将资源添加到资源集合中,资源集合是所有资源的按数字排序的索引哈希。定义很特殊,因为 Chef 将它们包含的资源(而不是定义本身)添加到资源集合中。包括食谱的资源通过include_recipe插入到位,然后厨师继续添加食谱。

一旦 Chef 处理完所有资源的所有配方,它就会遍历资源集合,按照添加到集合中的顺序对每个资源采取指定的操作。

我强烈建议阅读有关此过程的文档。适用于《Chef Solo》;仅跳过从服务器下载食谱的部分。

  • https://docs.chef.io/chef_client.html#the-chef-client-run https://docs.chef.io/chef_client.html#the-chef-client-run

为了确保仅测试您想要测试的配方,请通过 JSON 文件将它们包含在节点的运行列表中。它看起来像这样:

{ "run_list": ["recipe[mything]", "recipe[anotherthing]"] }

运行列表只是一个数组,项目可以是recipe[cookbookname] or role[somerole]。您可以在 Chef Solo 文档中阅读有关如何将角色与 Chef Solo 结合使用的更多信息。

  • https://docs.chef.io/chef_solo.html https://docs.chef.io/chef_solo.html

如果您在 Chef 加载说明书组件(每个说明书中的 ruby​​ 文件)时进行了系统更改,那么“您做错了”(tm)并且应该重构要在从菜谱调用的资源中完成的那些事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指定与 Chef Solo 一起运行哪些食谱 的相关文章

  • 如何查看节点安装的软件包版本?

    我正在调整 Apache 食谱以与 2 4 Apache 一起使用 Opscode Cookbook 目前失败 因为它正在生成带有 LockFile 关键字的 conf 文件 该关键字被排除在 Apache 2 4 关键字列表之外 我想制定
  • 向测试厨房添加属性

    我正在尝试覆盖中的属性java食谱与测试厨房 当我尝试跑步时kitchen converge default centos 64 出现严重的 YAML 错误 driver name vagrant customize memory 1024
  • 使用 Berkshelf 解决递归 git Cookbook 依赖关系

    TL 博士版本 Berkshelf 是否能够解决基于 Git 的说明书中的递归依赖关系 如果可以 如何解决 我尝试使用 Berkshelf 管理我的 Chef 食谱依赖项 这些食谱都存储在内部 Git 存储库中 依赖关系如下 env doc
  • 将自定义 Chef 推送作业添加到 Windows 白名单

    我正在尝试将推送作业添加到推送客户端的 Windows 白名单中 当我用刀进行搜索时 它会在 Windows 节点的白名单中显示自定义作业 当我尝试运行它时 作业立即失败 并且在 Windows 端它说该命令不在白名单中 我在GitHub上
  • 如何确定目录中的任何文件是否已更改

    Chef 有没有办法确定它是否更改了给定目录中的任何文件 如果conf d 目录中的任何设置被更新 我想重新启动服务器进程 我确信可以在每次厨师客户端运行时将 md5sum 列表写入文件 并将当前迭代与之前的迭代进行比较 但这是解决常见场景
  • 以非 root 用户身份运行厨师客户端

    我想在我的 Linux 机器上以测试用户身份运行 Chef client 为此 我在 client rb 文件中添加了来自 etc chef client rb 的缓存路径 cache path chef cache 然后我从测试用户 非r
  • 使用“文件”chef-solo 资源更新文件

    我正在尝试使用安装javachef solo 问题是设置JAVA HOME and PATH变量在 etc profile文件 我尝试使用 file 厨师提供的资源 这是我的一些代码 java home export JAVA HOME u
  • Windows 食谱中的 Chef NOT_IF 和 ONLY_IF 验证问题

    我正在运行这个简单的配方块来在 IIS 中创建一个 Web 应用程序 powershell script create site my site do code New webapppool name My Web App New Webs
  • 如何检查目录是否是厨师中的符号链接

    我只想删除不是 symlnik 的目录 directory var www html do action delete only if end 所选答案不适用于 Windows 或 Bash 为默认解释器的系统 您应该使用跨平台的 Ruby
  • 如何通过 Chef 在 Tomcat 7 食谱上上传 WAR 文件?

    我正在尝试在由 CHEF 上的食谱安装的 Tomcat 7 上部署一个 War 文件 但是 我在任何论坛上都找不到我的问题的答案 我不知道该怎么做 我使用的是 Ubuntu 服务器 12 10 我正在使用的食谱是https github c
  • Chef:是否可以定义使用模板的 Chef 资源,并从另一本说明书中调用它?

    我有一个使用 Chef 模板的资源 并且运行良好 食谱中的其他资源和食谱可以调用此资源 就我而言 我定义了一个 Maven 工件资源 在给定一些 Maven 参数 存储库名称 工件 ID 等 的情况下 您可以从 Nexus maven 存储
  • 使用 Chef 时主管打开文件限制不会改变

    我正在机器上修改 etc security limits conf 然后在 Chef 配方中安装 Supervisor 菜谱运行完成后 如果我运行cat proc
  • 如何安装knife-ec2插件?

    OSX 10 9 2 ruby v ruby 2 0 0p247 2013 06 27 revision 41674 universal x86 64 darwin13 knife v Chef 11 10 4 当我跑步时 knife ec
  • 在vagrant box上创建虚拟主机

    我正在尝试设置一个基于 Chef 提供的 vagrant 的开发环境 我使用 Apache 使用 Chef 创建了一个环境 并且可以通过端口转发从我的主机访问 Web 服务器 我想让我的流浪盒包含多个虚拟主机 并且通过共享文件夹 我将定义不
  • gitlab-ctl 重新配置:无法确定节点名称

    我确实在 Ubuntu 16 04 4 LTS 上设置了一个新的 GitLab 实例 安装包进展顺利 GitLab 似乎已启动并运行 然后我开始配置实例并设置 SMTP etc gitlab gitlab rb 后来我跑了sudo gitl
  • 厨师兼顾客中途死亡

    最近 我们开始遇到厨师客户在跑步过程中死亡的问题 因为我们在通常进行得更快的跑步列表的各个部分上花费了更多的时间 我使用的是家庭 Wi Fi 而我的同事使用的是工作 Wi Fi 该 Wi Fi 本身也存在一些连接问题 如果在 Chef cl
  • Knife Bootstrap 的 Chef 节点配置问题 - 无法通过服务器进行身份验证

    我正在尝试使用 Knife Bootstrap 设置厨师客户端节点 knife bootstrap nodename x user P passwd sudo 收到以下错误消息 Chef 在尝试创建客户端 nodename url com
  • 如何在 Chef LWRP 定义中实现动态属性默认值

    我希望能够用 3 个参数来定义一个轻量级资源 其中两个是基本 基本参数 第三个是这两个参数的组合 我还想提供自定义第三个参数的可能性 例如 如何修改以下代码以实现上述行为full name属性 资源定义 actions install at
  • 指定与 Chef Solo 一起运行哪些食谱

    我正在使用 Chef solo 在本地测试我的食谱 但我希望能够只运行我正在测试的食谱 目前 chef solo 似乎将运行在solo rb 中指定的cookbooks 目录中的所有cookbook 我已经在 json 属性文件中指定了运行
  • Chef deploy_resource 私有存储库、ssh 部署密钥和 ssh_wrapper

    我在让我的厨师食谱克隆私人仓库时遇到了很多麻烦 好吧 我昨天还可以用 但是在 清理 我的 Vagrant 盒子六次之后 我把它弄坏了 正如你可能猜到的那样 我是一名厨师新手 按照此处的deploy resource指南 我创建了我的depl

随机推荐

  • 在 .NET 中使用 FB Connect / Google OAuth 登录

    我希望允许我的用户使用我的登录系统 FB Connect 或 Google Login 登录我的网站 我不想仅使用大型库 如 dotnetOpenAuth 来实现这两个选项 那么我应该如何实现这一点 其他问题 我应该如何将 FB Googl
  • ALLOWED_HOSTS 和 Django

    我尝试在生产服务器上启动 Django 1 11 项目 当我启动应用程序时 我看到以下错误 无效的 HTTP HOST 标头 bla bla bla bla bla vla com 您可能需要将 u bla bla bla bla bla
  • 如何根据 iPhone 中的文本大小动态增加按钮宽度?

    我以编程方式创建了 10 个按钮 并在按钮中设置了标题 现在我想动态增加按钮框架大小 它取决于文本 我给出了一些条件并设置了框架大小 但我如何设置确切的帧大小取决于文本 动态获取文本 我的示例代码是 float x 0 y 0 w h 20
  • 在其间至少有 X 间隙长度的区域中生成点

    我试图想出一种在给定区域 在我的例子中是一个正方形 中生成 X 个随机点的方法 造成这个问题的一件事是每个点必须距离所有其他点至少 Y 个单位 首先想到的是 在 c 中 检查新点与所有现有点之间的距离 while points Count
  • 使用虚函数而不是IF语句更快?

    我记得在网上读到过 在极低延迟的情况下 最好使用虚拟函数来代替 IF 语句 这是真的 他们基本上是说动态多态性对于速度情况更好吗 是否有用户可以分享其他 C 低延迟 怪癖 我非常怀疑单个 if else 语句会比使用虚拟函数慢 虚拟函数通常
  • Google Geocode API 经度和纬度不适用于 zip 96101

    I am using google geocode api https developers google com maps documentation geocoding intro https developers google com
  • 具有异步等待任务组的最大线程数

    我的目的是了解 Swift 5 5 使用的 协作线程池 async await 以及任务组如何自动约束并发程度 考虑以下任务组代码 并行执行 32 个计算 func launchTasks async await withTaskGroup
  • 如何使用 Xdocument 将 xml 元素值转换为字符串

    我将 xml 存储在字符串中 并使用 Xdocument 将字符串解析为 xml 从中我需要获取 xml 元素值 并使用该值将其插入到数据库中 任何帮助 将不胜感激 XML
  • vim 一次选择/编辑多个非连续行

    我有一个带有字符串的文件 8 deb http ftp de debian org debian stable main contrib non free 9 deb http ftp de debian org debian stable
  • WebView 未正确显示

    WebView未正确显示网站 任何帮助都会很棒 我使用的代码在所有其他网站上都有效 不确定是什么问题 有什么我应该补充的吗 在 Chrome 和其他浏览器中运行良好 所以不知道该怎么做 任何帮助都会很棒 WebView Chrome pub
  • ValueError:负数不能求小数次方

    当我在终端尝试这个时 gt gt gt 3 66 26 32 0 2 我收到以下错误 Traceback most recent call last File
  • 将 VarBinary RTF blob 转换为 MS SQL 中的文本

    我正在使用 SQL Server 2008 Column Datatype VarBinary RTF 文件被压缩并保存到此 varbinary 列 现在如何使用 SQL 访问和查看 RTF 文件中的数据 它返回这个 弰巎楛 etc 此处尝
  • 带有 JSON 的范围对象

    我正在编写一个 Chrome 扩展程序 我需要将用户在网站上选择的值传递到我的服务器 我正在使用返回范围对象的代码 window getSelection 我正在使用 JSON 将范围对象传递回我的服务器 但它不起作用 我对此很陌生 但我认
  • C# 无法获取某些客户端计算机名称

    我使用下面的代码来获取客户端计算机名称 但是它适用于某些客户端 而某些客户端会出现错误 string IPAdd Request UserHostName IPHostEntry hostEntry Dns GetHostEntry IPA
  • IIS 上的 django,进程意外退出

    我已经阅读了关于该主题的所有文章 但我仍然无法在 IIS 上运行 django 项目 错误消息为 500 Internal Server Error c program files x86 python 3 5 python exe Fas
  • 如何更改 WPF 中绑定选项的默认值?

    在我当前的项目中 我使用了几个文本框控件 其内容由来自数据库的对象填充 该对象使用验证来验证文本的正确插入 当我想显示验证错误 即文本有很多字符 时 我必须向文本属性添加一些绑定选项 如下行所示
  • 删除 json_encode() 中的双引号

    我想删除 json encode 中的双引号 这是我的代码
  • 如何使用 Python 多线程处理 MySQL 连接

    我有一个主要的 Python 脚本 它连接到 MySQL 数据库并从中提取一些记录 根据返回的结果 它会启动与抓取的记录一样多的线程 类实例 每个线程都应该返回数据库并通过将一个状态标志设置为不同的状态 进程已启动 来更新另一个表 为了实现
  • Laravel 将数据透视表附加到具有多个值的表

    背景 我正在创建一个围绕食物过敏的数据库 并且食物和过敏之间存在多对多的关系 还有一个枢轴值称为severity其中有一个数字代表对该食品过敏的严重程度 这个链接表看起来像这样 food id allergy id severity 1 1
  • 指定与 Chef Solo 一起运行哪些食谱

    我正在使用 Chef solo 在本地测试我的食谱 但我希望能够只运行我正在测试的食谱 目前 chef solo 似乎将运行在solo rb 中指定的cookbooks 目录中的所有cookbook 我已经在 json 属性文件中指定了运行