Chef infra 如何在测试厨房中运行角色,而不将所有内容都放在berksfile中?

Chef infra 如何在测试厨房中运行角色,而不将所有内容都放在berksfile中?,chef-infra,chef-recipe,knife,test-kitchen,Chef Infra,Chef Recipe,Knife,Test Kitchen,a问,但我意识到我的问题更多的是如何概念化这项工作 我读了很多文章,但我还是非常困惑 以下是我现在正在做的事情: 我将一组基本角色应用于我的所有节点(windows\u base、linux\u base等)。这些角色应用一些方法,例如设置时区、加入AD以及执行所有服务器上所需的其他配置,而不管它们的用途如何 现在我有了我的其他食谱,可以安装应用程序并为特定目的进行特定的配置更改。虽然这些Cookbook通常应该在不需要首先运行基本角色的情况下“工作”(意思是不会抛出错误),但它们仍然可能依赖基

a问,但我意识到我的问题更多的是如何概念化这项工作

我读了很多文章,但我还是非常困惑

以下是我现在正在做的事情:

我将一组基本角色应用于我的所有节点(windows\u base、linux\u base等)。这些角色应用一些方法,例如设置时区、加入AD以及执行所有服务器上所需的其他配置,而不管它们的用途如何

现在我有了我的其他食谱,可以安装应用程序并为特定目的进行特定的配置更改。虽然这些Cookbook通常应该在不需要首先运行基本角色的情况下“工作”(意思是不会抛出错误),但它们仍然可能依赖基本角色来执行一些初始服务器配置,如果不首先应用该配置,则可能无法正常工作

因此,当我在TestKitchen中测试我的一本食谱时,我有时会希望在运行列表中包含一个基本角色(在我测试的食谱之前)

我使用刀子下载从服务器下载了我的角色,并通过roles_path在kitchen.yml中指定了它们,但显然我仍然需要告诉test kitchen在角色中的何处获取我的烹饪书

现在你可以看到我问的前一个问题,有人建议我使用BerksShelf,但是如果我这样做,我需要指定我正在测试的烹饪书berksfile中的基本角色中的所有食谱,对吗?这对我来说没有意义,因为当通过Chef服务器将角色应用到节点时,我不需要这样做。我也不想在我的berksfile中包含所有这些依赖项,因为就像我说的,它们有点依赖于角色,但不一定

我如何像在Chef服务器上一样使用测试厨房中的角色——这意味着我只将角色应用于节点运行列表

我应该说,我还尝试在kitchen.yml中定义cookbooks路径(cookbooks_path:),但这不起作用

这是我的厨房

---
driver:
  name: hyperv
  parent_vhd_folder: c:\HyperV\VHDs\
  parent_vhd_name: 2012R2.vhdx
  vm_switch: NAT
  memory_startup_bytes: 2GB

provisioner:
  name: chef_zero
  roles_path: c:\.chef\roles
  cookbooks_path: ..\

transport:
  password: myPass123$

platforms:
  - name: windows-2012r2

suites:
  - name: default
    run_list:
      - role[linux_base]
    attributes:

答案仍然和上次一样,你必须告诉厨房如何得到你所有的食谱。您可以通过Berkshelf、Library、Policyfiles或静态路径执行此操作。如果您希望看到100%的受支持内容,则相关代码位于中。没有什么比Chef服务器更自动化的了,因为这被认为是为了开发,因此不能依赖于单个工件的回购。

答案仍然和上次一样,你必须向Kitchen展示如何获取你所有的烹饪书。您可以通过Berkshelf、Library、Policyfiles或静态路径执行此操作。如果您希望看到100%的受支持内容,则相关代码位于中。没有什么比Chef服务器更自动化的了,因为它被认为是用于开发的,因此不能依赖于单个工件的repo。

那么将my
.kitchen.yml
中的
cookbooks\u路径设置为
C:\Users\me\.Berkshell
(my Berkshellf文件夹)是否可行/有意义?或者berkshelf是否覆盖
.kitchen.yml
中的
cookbooks\u path
?否,berkshelf存储文件夹的组织方式不允许Chef读取。Kitchen为您运行
berks vendor
到临时文件夹,以正确的格式输出内容。因此,将my
.Kitchen.yml
中的
cookbooks\u路径设置为
C:\Users\me\.Berkself
(my Berkself文件夹)是否可行?或者berkshelf是否覆盖
.kitchen.yml
中的
cookbooks\u path
?否,berkshelf存储文件夹的组织方式不允许Chef读取。Kitchen为您运行berks vendor
到临时文件夹,以正确的格式输出内容。