2014-04-10 2 views
1

는 다음 코드를 고려 자원하기인형 적용 배열

$demoarray = [ "TEST1", "TEST2" ] 
custom::line_mgmt { 
    file => "/tmp/test", 
    line => $demoarray, 
} 

배열을 전체적으로 처리합니다. TEST1이 아닌 TEST1TEST2을 삽입 한 다음 TEST2을 2 가지 다른 반복으로 삽입하려고합니다.

누군가 내 실수로 나를 지적 할 수 있습니까?

미리 감사드립니다.

답변

0

매개 변수 $line 매개 변수는 문자열 식 "/bin/echo '${line}' >> '${file}'"에 사용되는 배열 값으로 가정합니다.

Puppet에서 배열은 모든 요소를 ​​연결하여 문자열로 강제 변환됩니다.

Puppet (Puppet 3.2 이상의 사전 퍼펫 4 파서, 즉 future_parser=false)은 리소스 제목으로 사용될 때 배열을 통해서만 "반복"됩니다. 이 충돌과 화상 당신이합니다 (worker 자원이 금지되어 같은 제목을 가지고 있기 때문에) 다른 파일과 유사한 줄을 추가하려는

custom::line_worker($file) { 
    exec { "/bin/echo '${title}' >> '${file}'" } 
} 
define custom::line_mgmt ($file, $line) { 
    custom::line_worker { $line: file => $file } 
} 

참고. 그 주위에는 여러 가지 방법이 있지만이 작업을 수행하는 데 너무 많은 번거 로움이 있습니다.

이 특정 작업에서는 puppetlabs-stdlib 모듈의 file_line 유형을 사용할 수 있습니다.

templates을 반복 재생할 수도 있고 concat 모듈을 사용하여 전체 파일을 하나씩 관리 할 수도 있습니다.

0

꼭두각시 - 3.2에서 each 유형을 사용할 수 있습니다. 여기에서는 문자열 배열의 값을 다른 배열에있는 파일에 추가 할 수있는 예제를 제공합니다. 하나의 파일 만 지정하면됩니다. 꼭두각시 stdlib에서 file_line 유형을 사용하고 있습니다.

class testmodule::test { 

    define linemgmt($file, $line) { 
    file_line { "$file_$line" : 
     path => $file, 
     line => $line, 
    } 
    } 

    $demoarr = [ "test", "test2" ] 
    $demofiles = [ "file1", "file2" ] 

    each($demoarr) | $index, $value | { 
    linemgmt { "test_$index" : 
     file => $demofiles[$index], 
     line => $value, 
    } 
    } 
} 
+0

그러나 각각의 솔루션이 puppet.conf에서 활성화되었거나 꼭두각시가 적용될 옵션으로 전달 된 경우에만 해당 솔루션이 아직 출시되지 않은 상태입니다. Puppet 4.x – Walid