
다음 Puppet 코드를 가정해 보겠습니다.
define apache::base($pkgver = '2.4.10') {
$apache_ver = $pkgver
...
}
define apache::vhost($instance) {
...
$apache_ver = getvar(......)
}
apache::base{ "static-files":}
apache::base{ "dynamic": pkgver => '2.4.8' }
apache::vhost{ "static.example.com": instance => "static-files"}
해당 코드에서 (매개변수) 또는 (변수)를 어떻게 apache::vhost
참조 할 수 있나요 ?$pkgver
$apache_ver
apache::base
우리의 stdlib는 너무 오래되었고(Puppet은 여전히 2.7.x입니다) getparam()
. getvar()
할 수 있어야 하는데 어떻게 해야 할까요? 이 경우 변수의 전체 이름은 무엇입니까?
시도했지만 소용이 없었 getvar("apache::base[$instance]::apache_ver")
습니다 getvar("apache::base::$instance::apache_ver")
. getvar는 빈 문자열을 반환합니다. 올바른 방법은 무엇입니까?
답변1
당신은 그렇지 않습니다.
그러한 값을 얻으려면 다음을 참조해야 합니다.사례정의된 유형(예:
Apache::Vhost['main-site']::server_alias
그러나 그러한 것은 구현되지 않습니다.
모델을 재구성해야 합니다. 모듈에서 은( apache::vhost
는) 독립될 수 없습니다 apache::base
. 대신 apache::base
가상 호스트 자체를 선언할 수 있도록 리소스 해시를 전달하는 것이 좋습니다 .
define apache::base($pkgver = '2.4.10', $vhosts = {}) {
$apache_ver = $pkgver
...
create_resources('apache::vhost', $vhosts, { instance => $title })
}
그리고 그것을 다음과 같이 사용하십시오
apache::base{ "static-files":
vhosts => {
"static.example.com" => {
# attributes for Apache::Vhost["static.example.com"] go here
},
}
}