我试图使用厨师独奏来运行open-source Java cookbook虽然它不需要任何其他烹饪书,但厨师仍然说,缺少运行此菜谱所需的食谱。首先它要我安装 apt ,然后 homebrew ,然后安装_build_essentials_。这似乎是一本永无止境的食谱清单。我做错了什么?
这就是我运行食谱的方式:
chef-solo -c solo.rb -o recipe[java]
其中solo.rb
是包含cookbooks文件夹路径的配置文件。
当我尝试运行WAS cookbook.
时,也会发生同样的事情答案 0 :(得分:1)
简而言之:Chef(尚未)支持conditional dependencies。这就是为什么所有提供可能使用的资源或食谱的烹饪书都需要被声明为依赖。
Java食谱使用来自许多其他烹饪书的资源在不同的系统上安装Java,例如Windows,Linux,MacOS等。因此,它使用其他烹饪书,为例如提供资源。在Windows下安装软件包,添加APT存储库等。
为了让食谱包含食谱或使用来自另一本食谱的资源(例如apt_repository
),必须将此食谱指定为依赖性,以便在执行食谱之前加载(例如使用Java)。否则,Chef不会知道此资源/配方。
所以这些烹饪书都会在Chef运行期间加载,但是他们的代码不会被执行。虽然这感觉有点烦人,尤其是在您明显手动下载烹饪书的情况下,当您使用Berkshelf进行依赖项解析时,这并不是那么令人不安。强烈建议这样做。