我正在尝试通过 Chef Server 了解 Policyfile 工作流程。
到目前为止一切顺利,我正处于生成锁定文件并且“Chef 配置”正确获取配置说明书并开始收敛过程的阶段。
但是,似乎没有与 Policyfiles 等效的“berks install/berks vendor/knife upload”——在“chef push”期间,没有任何第三方 cookbook 上传到 Chef 服务器。因此,“chef provision”命令很明显失败并出现“找不到 Recipe ”错误。
这是我的策略文件的片段:
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'
当我运行“chef push DEV”时,只有“my-book”被上传到 Chef 服务器,而其他的都没有(尽管它们在 Policyfile.lock 中被正确提及)。这是正确的行为,还是我做错了什么?
与此同时,我已经使用 Berksfile 和 knife 来上传依赖项作为一种解决方法,但这从一开始就失去了 Policyfile 的很多值(value)。
有没有办法让“大厨推送”上传第三方菜谱?
非常感谢。
更新:
我已经用 recipe 替换了 role,但是还是不行:
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 上传/knife 上传解决方法。
这与这个问题相关吗? https://github.com/chef/chef-dk/issues/901
最佳答案
您不能真正将角色与策略文件一起使用,因为策略本身取代了角色的概念。推送使用运行列表来知道要上传什么,运行列表中提到的任何 Recipe 或其依赖项都将被上传。在这种情况下,您可能希望将其切换到 recipe[my-book]
而不是在策略中列出这两个 Recipe ,而是将它们作为依赖项添加到 my-book/metadata.rb
。查看https://yolover.poise.io/以获得更完整的演练。
关于linux - ChefDK Policyfile工作流程——如何上传第三方cookbooks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39322933/