2017-02-09 65 views
1

我試圖獲得爲一系列Registry_keys構建的廚師食譜。它們都在主廚屬性default.rb中進行託管。我試圖調用每個鍵的定義屬性和create_if_missing在廚師屬性中調用數組中的數組

代碼示例如下。

廚師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 
     } 
    ] 
    } 
] 

廚師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:是屬性數組中的所有符號。

任何幫助,將不勝感激。 謝謝

+0

是那些實際值您使用的還是你纂呢? – coderanger

+0

我不認爲混合兩個散列符號是一個好主意。請參閱[documentation](https://docs.chef.io/resource_registry_key.html#syntax),例如 – Tensibai

+0

這些值已被編輯。 –

回答

0

我遇到的問題是嵌套數組將字符轉換爲符號。我必須使用.map方法在我的配方內重建陣列。

廚師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