我有一个用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有严格的依赖性。我认为它是一个内部模块(不适用于木偶伪造),违反指南以支持代码可维护性应该没问题。
我在上面寻求其他人的意见。