Chef:是否可以定义使用模板的 Chef 资源,并从另一本说明书中调用它?

2024-01-20

我有一个使用 Chef 模板的资源,并且运行良好。食谱中的其他资源和食谱可以调用此资源。就我而言,我定义了一个 Maven 工件资源,在给定一些 Maven 参数(存储库名称、工件 ID 等)的情况下,您可以从 Nexus maven 存储库下载文件。

但是,当我从定义它的资源以外的任何其他食谱调用该资源时(使用metadata.rb当然,指定依赖项),我收到错误

 Chef::Exceptions::FileNotFound
           ------------------------------
           template[/usr/local/nexus-download.bash] (/tmp/kitchen/cache/cookbooks/cookbook-1/resources/nexus_http_artifact.rb line 52) had an error: Chef::Exceptions::FileNotFound: Cookbook 'cookbook-2' (1.0.0) does not contain a file at any of these locations:
[...]

该模板基本上是一个 bash 脚本,在检查 MD5 和并与使用 Nexus HTTP API 的当前下载进行比较后,稍后运行该脚本通过网络从 Maven 存储库 (Nexus) 下载工件。


您可以通过以下方式控制模板来自的食谱cookbook模板资源的属性。对于自定义资源,cookbook 属性默认为使用资源的调用说明书,而不是声明资源的位置。您可以轻松地覆盖它,因为您知道您正在编写的食谱的名称。所以我们可以这样:

食谱/mytemplate/resources/foo.rb

provides :foo

property :template_source, String, default: "foo.erb"
property :template_cookbook, String, default: "mytemplate"

action :run do
  template "/tmp/foo.xyz" do
    source new_resource.template_source
    cookbook new_resource.template_cookbook
  end
end

食谱/mytemplate/templates/foo.erb:

THIS IS THE DEFAULT TEMPLATE

食谱/测试/metadata.rb:

name "test"
version "0.0.1"

depends "mytemplate"

食谱/测试/食谱/default.rb:

foo "whatever"

然后,调用者可以使用自己的模板名称和位置来覆盖它,并将模板“依赖注入”到资源中:

食谱/测试/食谱/default.rb:

foo "whatever" do
  template_cookbook cookbook_name
  template_source "bar.erb"
end

食谱/测试/模板/bar.erb:

THIS IS THE OVERRIDDEN TEMPLATE

The cookbook_file资源有一个cookbook应该以相同的方式工作的属性。

您可以在定义属性的 sous-chef tomcat 食谱中“野外”使用此模式here https://github.com/sous-chefs/tomcat/blob/35195822e051a856f342fd7f80e1ee77bdfabf15/resources/service_upstart.rb#L35-L36然后在它渲染的模板资源中使用here https://github.com/sous-chefs/tomcat/blob/35195822e051a856f342fd7f80e1ee77bdfabf15/resources/service_upstart.rb#L90 and here https://github.com/sous-chefs/tomcat/blob/35195822e051a856f342fd7f80e1ee77bdfabf15/resources/service_upstart.rb#L100

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

Chef:是否可以定义使用模板的 Chef 资源,并从另一本说明书中调用它? 的相关文章

  • 数据包加密在Chef服务器上加密,但是如何加密本地副本呢?

    我在私有 git 存储库中拥有完整的 Chef 配置集 包括角色 食谱 数据包等 我发现当数据包上传到 Chef 服务器时 我可以使用 secret file 选项对其进行加密 但我也想将这些数据包加密存储在 git 存储库中 唯一想到的就
  • 如何使用Chef设置环境变量?

    有一个与此类似的问题 但无法使其正常工作 我想简单地设置一个环境变量 然后使用它 execute start zookeeper do cwd opt zookeeper 3 4 5 bin command zkServer sh star
  • 如何在 Chef 中扩展轻量级提供程序

    我正在创建一堆不同的 Chef 提供程序来部署不同类型的应用程序 厨师的文档扩展轻量级提供程序表明这是可能的 但实际上并没有说明要做什么 该页面表明也许可以调用mixin是需要的 但我不知道我的代码在下面的文件中应该有什么结构 librar
  • 使用 Chef 在 Windows 节点上挂载 Windows 共享

    我正在尝试将文件从 Windows 共享复制到我的节点的缓存 显然没有办法从remote file 做到这一点 所以我的替代想法是尝试将Windows 共享安装到本地驱动器并通过文件资源访问我需要的文件 然而 即使 Chef 告诉我挂载成功
  • 将自定义 Chef 推送作业添加到 Windows 白名单

    我正在尝试将推送作业添加到推送客户端的 Windows 白名单中 当我用刀进行搜索时 它会在 Windows 节点的白名单中显示自定义作业 当我尝试运行它时 作业立即失败 并且在 Windows 端它说该命令不在白名单中 我在GitHub上
  • 厨师食谱 - 重新加载路径

    我刚刚使用 Chef Cookbook 安装了 Java 并为所有用户更新了 PATH 环境变量 将新文件添加到 etc profile d 是否可以告诉厨师重新加载 PATH 变量 当我做这样的事情时 execute java check
  • Vagrant 需要 Roles.json 中的属性来破坏现有的 Chef 项目

    我有一个现有的chef solo我正在尝试添加的项目vagrant支持 我通常使用 Knife 在使用 Canonical 发布的 Ubuntu 10 04 AMI 的 EC2 服务器上烹饪这些食谱 Vagrant 要求我添加chef ty
  • Vagrant 来测试厨师食谱 - 但如何处理私人 git

    我使用 vagrant 来测试我的厨师食谱 问题是我已经克隆了我的私人存储库并且机器没有被认证 我如何自动对 boostrap Chef 进行 git 身份验证 我正在使用 vagrant ubuntu 11 10 with Chef Th
  • Chef ruby​​ gem 安装程序失败

    我尝试通过 Chef 在 CentOS VM 上设置 cassandra 但失败并出现以下错误 我努力了清除捆绑包缓存 https stackoverflow com questions 10575679 bundle update fai
  • 使用 shell 脚本自动化 VIM 编辑器并更新值(类似于通过 shell 脚本编辑 crontab)

    我正在尝试通过 Shell 脚本自动执行类似于 crontab 编辑的命令的 VI 编辑 但到目前为止对我不起作用 这是 admin 为 true 的最终 json name SQLSRVR admin true json class Ch
  • 我应该使用 include_recipe 还是将配方添加到 run_list 中?

    试图找出大型项目的最佳方法 何时适合使用以下方法在菜谱中添加菜谱include recipe而不是将食谱添加到run list 有没有好的经验法则 在我看来 任何配方都应该能够在空机器上独立运行 因此 如果某个配方 A 依赖于在其之前运行的
  • Chef服务器密码重置

    我在我的 Linux 机器上安装并运行了我自己的 Chef 服务器 当我访问厨师服务器用户界面时 它询问我用户名和密码 不幸的是我忘记了密码 我知道我的用户名是admin 我怎样才能恢复我的密码 用户界面中也没有忘记密码选项 我更改了默认密
  • 如何检查 Chef 的版本是否满足食谱中的宝石要求?

    Chef Version 包含 Chef gem 的版本号 我想检查它是否满足 gem 要求 gt 10 14在食谱里面 Use Gem Requirement and Gem Version Gem Requirement new gt
  • 厨师服务器 WebUI 不工作

    我已经下载并安装了chef server core 12 xDPKG 封装已开启ubuntu 13 x chef server ctl reconfigure运行成功 但是当我尝试 URL 时http chef example com我收到
  • 如何使用 ChefSpec 测试我的 LWRP?

    我创建了自定义 LWRP 但是当我运行ChefSpec https github com sethvargo chefspec单元测试 它不知道我的 LWRP 操作 这是我的resource actions install uninstal
  • 如何安装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
  • 在 Chef 中使用属性

    刚刚开始使用chef最近 我发现属性存储在一个名为的大型整体哈希中node可在您的食谱和模板中使用 似乎有多种定义属性的方法 直接在食谱本身中 在属性文件下 例如attributes default rb 在传递给的 JSON 对象中che
  • 替换包装食谱中的模板

    我正在尝试为以下内容写一本包装食谱厨师石墨回购 https github com hw cookbooks graphite 在配方carbon rb中 出现以下几行 template node graphite base dir conf
  • gitlab-ctl 重新配置:无法确定节点名称

    我确实在 Ubuntu 16 04 4 LTS 上设置了一个新的 GitLab 实例 安装包进展顺利 GitLab 似乎已启动并运行 然后我开始配置实例并设置 SMTP etc gitlab gitlab rb 后来我跑了sudo gitl
  • 指定与 Chef Solo 一起运行哪些食谱

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

随机推荐

  • 如何内嵌文本旋转 90 度

    如何在不使用样式表的情况下将文本旋转 90 度 我已将以下说明放置在页面的标题区域中 然后我在相关段落周围放置了以下内容 div p My paragraph p div 但它不起作用 因此我的问题 这是一个小的视觉示例 rotate te
  • 谷歌地图不显示

    我需要在我的 php 页面地图上实现 我有容器 div div 它位于其他 div 内 我将这段代码放入其中标签 但根本不显示 有谁能够帮助我
  • 如何将表转换为 Spark Dataframe

    在 Spark SQL 中 可以使用以下命令将数据帧作为表进行查询 sqlContext registerDataFrameAsTable df mytable 假设我有的是mytable 我如何获取或访问它作为 DataFrame 最干净
  • 如何在 Swift 中规范化 UIImage 的像素值?

    我们正在尝试使UIImage以便它可以正确传递到 CoreML 模型中 我们从每个像素检索 RGB 值的方法是首先初始化一个 CGFloat 数组称为rawData每个像素的值 这样就有一个红色 绿色 蓝色和 alpha 值的位置 在bit
  • ANSI 颜色在带有 PowerShell 的 VSCode 集成终端中不起作用

    我正在为我的 python 项目使用 Visual Studio Code 并且我也在使用片状天堂 https flakeheaven readthedocs io en latest 未维护的分叉弗莱克地狱 https github co
  • 将 python BOTO 与 AWS SQS 结合使用,返回无意义的字符

    因此 我使用 python 和 BOTO 来访问我的 AWS SQS 我在 SQS 中有一些消息 我可以从 AWS 仪表板看到这些消息 然而 当我尝试通过 python 获取这些消息时 出现的字符只是乱码 知道这是怎么回事吗 conn bo
  • 在中继器内更新图像的 ImageUrl

    我希望有一个人可以帮助我 恐怕这是一个相当新手的问题 我在中继器中有一个图像 我想根据传递给它的参数更改其 IMAGEURL
  • 使用 Clipper 库 (c++) 进行线和多边形裁剪返回空路径

    我正在尝试使用 Clipper 库按线分割多边形 执行裁剪后 返回空路径 有人可以建议正确的方法来做同样的事情吗 Paths clip 2 soln clip 0 lt lt IntPoint 264 210 lt lt IntPoint
  • 在 Python 中下载 Sharepoint Excel 文件

    我正在尝试使用 Python 脚本从 SharePoint 存储库下载 Excel 文件 我正在使用 Office365 Rest Python Client 如示例中所定义https github com vgrem Office365
  • 在 Vista 上捕获“程序停止运行”

    在 Vista 上 我遇到了应用程序崩溃处理程序的问题 基本上 如果发生 SEH 无法捕获的意外情况 我会收到此弹出窗口 其中包含 应用程序停止工作 blablabla 关闭程序 调试程序 也就是说 在我使用系统控制面板 启用错误报告后 您
  • 如何获取图像的亮度梯度

    我正在努力通过图像亮度检查来理解图像 我尝试通过下面的代码找到图像的亮度 def brightness im file im Image open im file stat ImageStat Stat im r g b stat rms
  • 使闪亮的 dateInput 返回 NULL 或空字符

    我正在开发一个闪亮的应用程序 它允许用户从input插入 SQL Server 数据库 我想要做的一件事是删除当前存在的日期 为此 我需要一种方法来通过NULL NA or 某物我可以用它来将数据库中的值设置为 NULL dateInput
  • 查找具有属性支持的 JavaScript 库,用于在 JavaScript 中序列化和反序列化对象

    考虑 JavaScript 中的以下类 Tools UserBase Tools Class define Tools UserBase Tools EntityBase UserId type System Int32 key true
  • Laravel 在共享主机上运行 artisan 命令

    我在以下网站上托管了一个网站http 000webhostapp com http 000webhostapp com一段时间以来它工作正常 但它向我显示了这个错误 生产 错误 未指定应用程序加密密钥 我发现我必须运行这个 artisan
  • 如何使用 Terraform 和 AWS API Gateway 创建 API 代理

    我正在尝试使用 Terraform 在 AWS 上的 API Gateway 中建立一个简单的 API 代理 基本上 我想包装 root 并将请求代理回另一个端点 这可能是最简单的设置 但我似乎无法让它在 Terraform 中工作 您将在
  • 在 html 中添加图像

    我似乎无法在 html 中添加图像 我正在使用 ASP net MVC 3 我的图像名为 KeyLargoPic 位于闪存驱动器上的文件夹 X Project Project Photos Key Largo 中 它看起来是 JPEG 代码
  • 如何使 osx 应用程序向后兼容以及如何测试它们的困惑

    阅读苹果SDK指南后https developer apple com library mac documentation developertools conceptual cross development Overview overv
  • 正则表达式中反斜杠后面的数字是什么意思?

    a b 1 什么是 1这个表达的意思是 1 表示匹配表达式中的第一个捕获组 n将是第 n 个捕获组 注意 0将是整场比赛 在许多引擎中 n 的上限为 9 但有些引擎也支持高达 99 当在正则表达式中使用时 例如 a b 1 这意味着在 a
  • IIS 中的 PuppeteerSharp

    我面临着一个有点恼人的情况 我们尝试在应用程序中使用 PuppeteerSharp 来生成背景 PDF 虽然它在开发模式下运行良好 但在生产环境中却不起作用 该应用程序是一个WebAPI 2 0站点 NET4 7 1 Windows 10机
  • Chef:是否可以定义使用模板的 Chef 资源,并从另一本说明书中调用它?

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