2017-02-09 2 views
1

일련의 Registry_keys 용 Chef 레서피를 만들려고합니다. 이들은 모두 주방장 속성 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 
     } 
    ] 
    } 
] 

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'] 주장을 호출이를 구축하기 위해 이동 요리사 Recipe\registryKey.rb

Bad key name in RegistryKey values hash 

나는 이유를 완전히 확실하지 않다 있음 은 name:, type:data:은 모두 attributes 배열의 기호입니다.

도움을 주시면 감사하겠습니다. 고맙습니다,

+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 
관련 문제