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