ChefDK Policyfile工作流程 - 如何上传第三方烹饪书?

时间:2016-09-05 01:38:07

标签: linux macos chef

我试图理解使用Chef Server的Policyfile工作流程。

到目前为止一直很好,我在生成锁定文件的位置和#34;厨师提供"正确地拿起配置食谱并启动融合过程。

然而,似乎没有" berks install / berks vendor / knife upload"等同于Policyfiles - 在" chef push"期间,没有任何第三方烹饪书被上传到Chef服务器。因此,"厨师提供"命令很明显失败了"找不到食谱"错误。

这是我的政策文件的片段:

name "policy-test"
# Where to find external cookbooks:
default_source :supermarket
run_list "role[my-book::default]"

cookbook 'my-book', path: './cookbooks/my-book'
cookbook 'java'
cookbook 'chef-teamcity'

当我跑步"厨师推动DEV"时,只有" my-book"上传到Chef服务器,但没有其他人(尽管他们在Policyfile.lock中得到了正确的提及)。这是正确的行为,还是我做错了什么?

与此同时,我已经使用Berksfile和knife来上传依赖项作为一种解决方法,但这首先从使用Policyfile中消除了很多价值。

有没有办法让#34;厨师推动"上传第三方烹饪书?

非常感谢提前。

更新:

我已经用配方取代了角色,但它仍然不起作用:

 Starting Chef Client, version 12.13.37
                      resolving cookbooks for run list: ["my-book::default"]

                      ================================================================================
                      Error Resolving Cookbooks for Run List:
                      ================================================================================

                      Missing Cookbooks:
                      ------------------
                      The following cookbooks are required by the client but don't exist on the server:
                      * my-book

仍然必须使用berks上传/刀上传解决方法。

这与此问题有关吗? https://github.com/chef/chef-dk/issues/901

1 个答案:

答案 0 :(得分:0)

由于策略本身取代了角色的概念,因此您无法在Policyfiles中使用角色。推送使用运行列表来知道要上传的内容,运行列表中提到的任何烹饪书或其依赖项都将被上传。在这种情况下,您可能希望将其切换为recipe[my-book],而不是在策略中列出这两个cookbook,将它们添加为my-book/metadata.rb中的依赖项。查看https://yolover.poise.io/以获得更完整的演练。