linux - ChefDK Policyfile工作流程——如何上传第三方cookbooks?

标签 linux macos chef-infra

我正在尝试通过 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/

相关文章:

macos - 如何在 Mac OS X 中获取当前鼠标光标类型?

deployment - Nginx Recipe v 2.0.0 : Cookbook http_gzip_static_module not found

linux - 将一个文件夹拆分为多个文件夹,而不在终端/bash 中创建子文件夹

java - 在 JRE 和错误 : Could not find or load main class 中运行 java 编译的类

linux - 管道 ls 输出到 scp 命令

java - 用于运行 Java 应用程序的批处理文件。如何将其移植到 Mac 中?

macos - 请求 EventKit 访问 macOS SwiftUI

linux -/sys/bus/pci/device/0000 :xx:xx. x/resource下的资源文件包含什么信息?

php - Vagrant 与 Chef : How to install a newer version of PHP?

amazon-web-services - 如何使用 vagrant 和 vagrant-aws 手动触发 rsync?