Puppet

Puppet/hiera : 從一個模板生成多個文件

  • November 24, 2016

我正在執行 puppet 4,我想從同一個模板生成幾個配置文件,每個配置文件都有不同的配置。

例如 :

# cat /tmp/a.conf 
test1

# cat /tmp/b.conf 
test2

而且我需要將所有這些資訊放在 hiera 中,所以我認為是這樣的:

test::clusters:
 - 'a.conf'
   text: 'test1'
 - 'b.conf'
   text: 'test2'

謝謝

好的,我找到了使它起作用的方法:

這是我的 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'

你需要一個定義的類型

define test::clusters (
 $text = undef
) {

 file { "/tmp/${title}":
   ensure  => $ensure,
   owner   => 'root',
   group   => 'root',
   content => template('my_file/example.erb'),
 }

}

在模板/測試/集群中

<%= @text %>

然後您可以test::clisters像這樣在清單中定義 a :

::test::clusters { 'a.conf':
 text => 'test1'
}

或者如果您仍然希望使用 hiera,您可以使用create_resources

引用自:https://serverfault.com/questions/816909