Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ChefDK Policyfile工作流-如何上载第三方食谱?_Linux_Macos_Chef Infra - Fatal编程技术网

Linux ChefDK Policyfile工作流-如何上载第三方食谱?

Linux ChefDK Policyfile工作流-如何上载第三方食谱?,linux,macos,chef-infra,Linux,Macos,Chef Infra,我正试图通过Chef Server了解Policyfile工作流 到目前为止还不错,我已经到了生成锁文件和“厨师供应”正确选择供应食谱并启动converge过程的时候了 然而,似乎没有与Policyfiles相当的“berks安装/berks供应商/knife上载”——在“厨师推送”期间,没有第三方烹饪书上载到厨师服务器。因此,“chef provision”命令明显失败,出现“找不到烹饪书”错误 以下是我的保单文件的片段: name "policy-test" # Where to find

我正试图通过Chef Server了解Policyfile工作流

到目前为止还不错,我已经到了生成锁文件和“厨师供应”正确选择供应食谱并启动converge过程的时候了

然而,似乎没有与Policyfiles相当的“berks安装/berks供应商/knife上载”——在“厨师推送”期间,没有第三方烹饪书上载到厨师服务器。因此,“chef provision”命令明显失败,出现“找不到烹饪书”错误

以下是我的保单文件的片段:

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”时,只有“我的书”被上传到chef服务器,但其他的都不会(尽管它们在Policyfile.lock中得到了正确的提及)。这是正确的行为,还是我做错了什么

与此同时,我已经求助于Berksfile和knife来上传依赖项作为一种解决方法,但这从一开始就让Policyfile失去了很多价值

有没有办法让“厨师推送”上传第三方食谱

非常感谢

更新:

我已将角色替换为recipe,但它仍然不起作用:

 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 upload/knife upload解决方案


这与这个问题有关吗

您不能将角色与策略文件一起使用,因为策略本身取代了角色的概念。推送使用运行列表来知道要上传什么,运行列表中提到的任何烹饪书或其依赖项都将被上传。在这种情况下,您可能希望将其切换到
recipe[my book]
,而不是在策略中列出这两本食谱,而是将它们作为依赖项添加到
my book/metadata.rb
中。查看更完整的演练。

您喜欢策略文件吗?我个人更喜欢创建特定于应用程序的环境,并使用“berks apply”来确定cookbook版本。(请参阅:)@MarkO'Connor某种程度上-使用chef配置来加速ec2实例和所有jazz。对,因此使用角色基本上打破了基于策略的依赖解析。谢谢它没有坏,只是不能一起使用。这是设计的。