【问题标题】:Is it possible to include_recipe without adding the recipe do metadata.rb是否可以在不添加配方的情况下包含_recipe do metadata.rb
【发布时间】:2017-07-22 23:26:42
【问题描述】:

我有一本需要为 Windows 和 RHEL 机器安装软件的说明书。有一本我可以利用 RHEL 盒子的现有食谱,我将其称为 linux-foo。我将它包含在带有include_recipe 'linux-foo' 的默认食谱中,并在食谱元数据中添加了depends 'linux-foo'

但是,通过将依赖项添加到元数据,它破坏了我的自定义 Windows 配方。我来了

   NoMethodError
   -------------
   undefined method `[]' for nil:NilClass

   Platform:
   ---------
   x64-mingw32

尝试在测试厨房中收敛 Windows 配方时。它指的是.../linux-foo/attributes/default.rb 是罪魁祸首,但没有指定哪个属性。

有没有办法仍然 include_recipe 'linux-foo' 但不将其作为硬依赖包含在 metadata.rb 中,或者以某种方式包装第 3 方食谱的默认属性?

看起来我要么保留依赖关系并打破 windows 配方,要么将 linux 和 windows 配方分成单独的说明书。

【问题讨论】:

    标签: chef-infra cookbook recipe


    【解决方案1】:

    不幸的是,没有直接的方法可以做到这一点。 Chef 目前不支持可选依赖项。

    最好的解决方法是让您的 linux-foo 食谱可以安全地加载到非 Linux 机器上,即使食谱不是这样。如果您查看错误报告中提到的文件,您可以找到完整的堆栈跟踪,这将告诉您需要修复哪一行(尽管可能不止一个)。

    【讨论】:

    • 感谢@coderanger。我检查了 VM 上转储的堆栈跟踪,它非常神秘,但我会重新讨论。我可以通过哪些方式使第三方 linux-foo 食谱安全并与我的 Windows 食谱兼容?我可以在我的食谱中以某种方式包装或保护其有问题的默认属性吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2021-11-17
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多