gpt4 book ai didi

chef-infra - 没有metadata.rb 文件的 Chef 超市 Recipe

转载 作者:行者123 更新时间:2023-12-02 03:03:38 25 4
gpt4 key购买 nike

从 Chef's Supermarket 安装/下载 Recipe 时,某些 Recipe 确实包含metadata.json 文件,但不包含metadata.rb 文件。

如果没有metadata.rb 文件,用户就无法将菜谱上传到 Chef 服务器。我的问题有两个:

  1. 如果下载/安装的说明书不包含元数据,是否有办法为项目生成正确的metadata.rb 文件?
  2. 如果没有metadata.rb,是否有办法将菜谱上传到 Chef 服务器?

这是在我的工作站上运行的 ChefDK 版本:

  1. Chef 开发套件版本:1.3.43
  2. Chef 客户端版本:12.19.36
  3. 交付版本:主版 (dd319aa632c2f550c92a2172b9d1226478fea997)
  4. berks版本:5.6.4
  5. 厨房版本:1.16.0

这是我用来从超市获取 Recipe 的命令和 Recipe :

  1. knife Recipe 网站下载 jenkins
  2. knife Recipe 网站安装 jenkins

网址:https://supermarket.chef.io/cookbooks/jenkins#readme

感谢您的帮助。我在 Chef 的文档中找不到太多关于使用不包含metadata.rb 文件的 Recipe 的信息。据我所知,每本说明书都应该有一个位于每个说明书目录中的metadata.rb 文件。

最佳答案

好吧,这需要一些历史课来解释。早期,每个人都通过使用网络表单并上传 tarball 手动将 Recipe 上传到超市(当时的社区网站)。这很糟糕,所以我们添加了一个 API 和一个 CLI 命令knife Cookbook site share。该命令的工作原理基本上类似于 knife Recipe 上传 ,因为它是为“chef-repo” monorepo 风格设计的,其中所有 Recipe 都位于名为“cookbooks/”的单个文件夹中。随着 Berkshelf 获得关注,越来越多的人开始将每本 Recipe 放在自己的存储库中并单独使用它们。这使得使用knife Cookbook site share变得更难使用,因此编写了一个新工具:stove。 Stove 试图纠正knife Cookbook site share中的一系列问题,其中之一就是动态元数据的持续问题。一些精美的 Recipe 使用 thor-scmversion 等工具来管理 Recipe 元数据,这意味着metadata.rb 有一行看起来基本上类似于 version IO.read('VERSION')。还有其他示例,但简短的版本是,如果metadata.rb包含动态代码,您不希望在发布后重新运行该动态内容,因为它可能无法在您的计算机上运行(就像它使用某些文件一样)或仅存在于 Recipe 作者机器上的工具)。当时,强制 Chef 世界中的所有内容不运行metadata.rb 的唯一方法是不将其包含在上传中,而只包含编译后的metadata.json。

我们就到这里了。 knife Cookbook site share 通常仅上传 .rb 而不是 .json,而 stove 则相反。现在,我们已经修复了整个生态系统中的问题,以便知道如果metadata.rb 和metadata.json 都存在,则更喜欢JSON。我们的计划是修复上传者以全部上传这两个文件,但目前我们仍坚持差异。

也就是说,您实际上不需要任何内容​​的metadata.rb,您可以仅使用 JSON 上传到 Chef 服务器,Berkshelf 和策略系统都会为您自动执行此操作。

关于chef-infra - 没有metadata.rb 文件的 Chef 超市 Recipe ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44164669/

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