我正在运行 puppet 4,我想从同一个模板生成多个配置文件,每个文件都有不同的配置。
例如 :
# cat /tmp/a.conf
test1
# cat /tmp/b.conf
test2
我需要把所有这些信息放在层次结构中,所以我认为是这样的:
test::clusters:
- 'a.conf'
text: 'test1'
- 'b.conf'
text: 'test2'
谢谢
答案1
你需要一个定义类型
define test::clusters (
$text = undef
) {
file { "/tmp/${title}":
ensure => $ensure,
owner => 'root',
group => 'root',
content => template('my_file/example.erb'),
}
}
在 templates/test/clusters 中
<%= @text %>
然后您可以test::clisters
像这样在清单中定义:
::test::clusters { 'a.conf':
text => 'test1'
}
或者如果你仍然希望使用 hiera,你可以使用创建资源
答案2
好的,我找到了如何使其工作的方法:
这是我的 hiera data/common.yaml:
test::paramconf:
'a':
text: '1'
'b':
text: '2'
这是我的模块配置 manifests/init.pp:
class test ($paramconf){
create_resources(test::conf, $paramconf)
}
define test::conf (
String[1] $text,
String[1] $text2 = $title,
) {
file { "/tmp/${title}.conf":
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
content => template('test/test2.erb'),
}
}
我唯一不明白的是它为什么有效:
test::paramconf:
'a':
text: '1'
'b':
text: '2'
但这是行不通的:
test::paramconf:
- 'a':
text: '1'
- 'b':
text: '2'