我试图处理以下情况:
class profile:mq {
include rabbitmq
}
class rabbitmq (
$user, $pass, $host ) {
...logic...
}
我想使用hiera自动查找通过profile :: mq类填充rabbitmq中的参数(例如profile :: mq:rabbitmq :: user:" value&#34 ;, not rabbitmq :: user: "价值")我的猜测是封装rabbitmq但不知道如何在puppet中进行。
答案 0 :(得分:2)
你只需要定义:
rabbitmq::user: some_user
rabbitmq::pass: some_password
rabbitmq::host: some_host
在hiera
层次结构中的正确配置文件中。来自hiera
的值将在accont中自动获取。
答案 1 :(得分:2)
自动数据绑定:良好的计划。
但是,它根本无法按照您的建议行事。给定类查找其参数值的层次结构键仅取决于类和参数名称。它们独立于该类的任何和所有声明的轨迹。不可能是这样,因为可以为同一个目标节点评估同一个类的多个声明,并且 - 因为类是单例 - 它们都声明了相同的类(实例)。您可能能够通过将rabbitmq参数值放在Hiera层次结构的特定于配置文件的级别中来实现您所追求的目标。这对我来说不太合适,但它可以很好地满足你的目的。
答案 2 :(得分:-2)
您还需要在profile :: mq中声明您的参数:
class profile::mq($user, $pass, $host) {
class { 'profile::mq':
user => $user,
pass => $pass,
host => $host
}
...
..
}
class rabbitmq($user, $pass, $host) {
...
}
您可以使用rabbitmq
而不是class { rabbitmq: params }
来实例化include
课程,这样您就可以将profile::mq
参数传递给rabbitmq
课程。
希望这有帮助