Puppet/hiera :从一个模板生成多个文件

Puppet/hiera :从一个模板生成多个文件

我正在运行 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'

相关内容