Можно ли выполнять поиск в Hiera в модуле?
У меня есть сервис, реализованный на Java, который зависит от 3 файлов свойств. Я определил 'define' для каждого файла свойств в модуле общих свойств и использовал их из модуля, специфичного для службы. Определение для одного из файлов свойств показано ниже:
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), модуле init.pp (добавление / удаление параметров из конструктора) и config.pp (настройка параметров при вызове define для файла свойств).
Я чувствую, что вышеуказанная проблема может быть решена путем включения поиска hiera в 'define' для файла свойств, например так:
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. Я полагаю, что это внутренний модуль (не предназначенный для марионеточной подделки), поэтому следует нарушать правила в пользу удобства сопровождения кода.
Я стремлюсь к мнению других по поводу выше.