在数组中调用Chef属性

时间:2017-02-09 20:28:52

标签: chef chef-recipe

我正在尝试为一系列Registry_keys构建一个Chef配方。它们都在chef属性default.rb中托管。我正在尝试调用已定义的属性并且每个键都调用create_if_missing

代码示例如下。

Chef attribute\default.rb

default['randomhost']['registry']['entries'] = [
  { 
    'Key' => 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\RandomApplication', 
    'Values' => [
      {
        name: 'RandomValueName', 
        type: :qword, 
        data: 1 
      }, { 
        name: 'RandomValueName2', 
        type: :qword, 
        data: 2
      }
    ] 
  }
]

Chef Recipe\registryKey.rb

node['randomhost']['registry']['entries'].each do |item|
  registry_key item['Key'] do
    values item['Values']
    recursive true
    action :create_if_missing # Default
  end
end

当我开始构建时,请调用item['Values']声明

Bad key name in RegistryKey values hash

我不完全确定为什么这是name:type:data:都是属性数组中的符号。

任何帮助将不胜感激。 谢谢,

1 个答案:

答案 0 :(得分:0)

我遇到的问题是嵌套数组正在将符号转换为字符串。我不得不使用.map方法在我的配方中重建数组。

Chef Recipe\registryKey.rb

node['randomhost']['registry']['entries'].each do |item|
  my_array = item['Values'].map { |key| 
    { 
     name: key['name'], 
     type: key['type'], 
     data: key['data'] 
    } 
  }
  registry_key item['Key'] do
    values my_array
    recursive true
    action :create_if_missing # Default
  end
end