【问题标题】:Unable to resolve chef roles with TestKitchen无法使用 TestKitchen 解决厨师角色
【发布时间】:2020-12-04 02:41:51
【问题描述】:

我正在尝试使用 TestKitchen 记录厨师角色的属性 波纹管我的配置:

roles/myrole.json

{
  "name": "myrole",
  "json_class": "Chef::Role",
  "description": "Example",
  "chef_type": "role",
  "default_attributes": {
    "git_cookbook": {
      "mykey1": "myvalue"
    }
  },
  "run_list": [
    "recipe[git_cookbook]"
  ]
}

git_cookbook

log "Hello World, #{node['mykey1']}" do
  level :info
end

package 'git'

kitchen.yaml

---
driver:
  name: vagrant

provisioner:
  name: chef_zero
  roles_path: ../roles

verifier:
  name: inspec

platforms:
  - name: ubuntu-20.04

suites:
  - name: default
    verifier:
      inspec_tests:
        - test/integration/default
    run_list:
        - role[myrole]
    attributes:

Policyfile.rb

name 'git_cookbook'

default_source :supermarket

run_list 'role[myrole]'

cookbook 'git_cookbook', path: '.'

当我运行命令:厨房收敛(或厨房测试)时,mykey1 的值“myvalue”没有被记录。

 ....
 Recipe: git_cookbook::default
 log[Hello World, ] action write 
 ....

似乎 TestKitchen 忽略了我在 kitchen.yaml 和 Policyfile.rb 中指定的角色,我试图从其中一个或另一个中删除它,但没有一个选项有效。

知道为什么吗?我错过了什么吗?

【问题讨论】:

    标签: chef-infra test-kitchen


    【解决方案1】:

    在您的git_cookbook(配方)中,您指的是属性:node['mykey1']

    而在roles/myrole.json 中,您有效定义的属性是:

    node['git_cookbook']['mykey1']
    

    那么在你的食谱中,你应该有:

    log "Hello World, #{node['git_cookbook']['mykey1']}" do
      level :info
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-04
      • 2013-11-03
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多