2014-07-23 1 views
2

hiera에서 자원 생성까지 해시를 전달하는 데 문제가 있습니다.Puppet hiera 및 create_resource 문제

vhosts: 
    project_1: 
     name: project_1 
     project_name: project_1 
    project_2: 
     name: project_2 
     project_name: project_2 

$vhosts = hiera('vhosts', []) 
create_resources(project_vhosts::vhosts, $vhosts) 

숨겨진 프로젝트 이름을 무시하십시오. :) 그러나 당신은 요지를 얻습니다. 내 자원은 다음과 같습니다

define project_vhosts::vhosts(
$vhosts = [] 
){ 
    notice($vhosts) 
} 

내 꼭두각시 후 이러한 오류가

Error: Invalid parameter project_name on project_vhosts::Vhosts[project_1] on node * 
Wrapped exception: 
Invalid parameter project_name 
Error: Invalid parameter project_name on project_vhosts::Vhosts[project_1] on * 

나는 그것이 나 클래스에 직접 매개 변수를 구현하기 위해 원하는 것을 얻을 실행 얻을. 그러나 실제로 내가 원한 것은 해시가 전체적으로 나에게 자원으로 제공된다는 것입니다. 여기서 내가 뭘 잘못하고 있니?

+0

호기심에서 벗어나서 'create_resources'가 구성 데이터를 매개 변수에 매핑하지 않게하려는 이유는 무엇입니까? 그것이 유일한 목적입니다. –

답변

0

먼저 해시를 나타내려면 []을 사용하지 마십시오. 그렇지 않습니다. []은 빈 배열이고 {}은 빈 해시입니다.

원하는대로하려면 데이터에 해싱 계층이 하나만 있으면됩니다.

vhost_data: 
    vhosts: 
     project_1:    
      name: project_1 
      project_name: project_1 
     project_2: 
      name: project_2 
      project_name: project_2 

그런 다음 물론

$data = hiera('vhost_data', {}) 
create_resources(project_vhosts::vhosts, $vhosts) 

는 아직 데이터와이 모든 것을 할 수있는 간단한 방법이있다.

project_vhosts::vhosts { 
    'meaningless-resource-title': 
     vhosts => hiera('vhosts', {}) 
} 
관련 문제