Hiera查找可以在模块中完成吗?

时间:2015-01-20 06:14:45

标签: puppet code-duplication code-maintainability

我有一个用Java实现的服务,它依赖于3个属性文件。我已经定义了'定义'对于公共属性模块中的每个属性文件,并从服务特定模块中使用它们。 '定义'其中一个属性文件如下所示:

define properties::rabbitmq (
  $property_file,
  $service_name,
  $rabbitmq_host,
  $rabbitmq_username,
  $rabbitmq_password,
  $rabbitmq_port,
  $rabbitmq_vhost) {
  file { $property_file:
    ensure  => file,
    content => template('config/rabbitmq.properties.erb'),
    mode    => '0644',
    notify  => Service[$service_name],
  }
}

我在我的木偶代码中遵循角色和个人资料模式,并在服务特定的个人资料中执行所有hiera查找。因此,每当属性文件发生变化时,我都需要对使用该属性文件的所有木偶模块进行级联更改。在配置文件(hiera查找),模块init.pp(从构造函数中添加/删除参数)和config.pp(在为属性文件调用' define'时调整参数)中需要进行更改。

我觉得通过在' define'中加入hiera查找可以解决上述问题。对于属性文件,如下所示:

define properties::rabbitmq ($property_file, $service_name,) {

  $rabbitmq_host = hiera('rabbitmq_host')
  $rabbitmq_username = hiera('rabbitmq_username')
  $rabbitmq_password = hiera('rabbitmq_password')
  $rabbitmq_port = hiera('rabbitmq_port')
  $rabbitmq_vhost = hiera('rabbitmq_vhost')

  file { $property_file:
    ensure  => file,
    content => template('config/rabbitmq.properties.erb'),
    mode    => '0644',
    notify  => Service[$service_name],
  }
}

但是,上面是对角色和个人资料模式的违反。以上是在模块中进行hiera查找而不是在配置文件中进行。现在,该模块对hiera有严格的依赖性。我认为它是一个内部模块(不适用于木偶伪造),违反指南以支持代码可维护性应该没问题。

我在上面寻求其他人的意见。

0 个答案:

没有答案