我正在尝试处理以下情况:
class profile:mq {
include rabbitmq
}
class rabbitmq (
$user, $pass, $host ) {
...logic...
}
我想使用 hiera 自动查找通过 profile::mq 类填充 rabbitmq 中的参数(例如 profile::mq:rabbitmq::user:"value",而不是 rabbitmq::user:"value") 我的猜测是封装 rabbitmq,但不确定如何在木偶中做到这一点。
自动数据绑定:好计划。
但是,它根本不按照您提议的方式工作。 给定类用于查找其参数值的 hiera 键仅取决于类和参数名称。 它们独立于该类的任何和所有声明的位置。 它不可能是其他的,因为同一类的多个声明可能会针对同一目标节点进行评估,并且 - 因为类是单例 - 它们都声明相同的类(实例)。
您可以通过将 rabbitmq 参数值放在 Hiera 层次结构的特定于配置文件的级别来实现您所追求的目标。 这对我来说感觉不太对,但它可能足以满足您的目的。
你只需要定义:
rabbitmq::user: some_user
rabbitmq::pass: some_password
rabbitmq::host: some_host
在层次结构hiera
正确的配置文件中。来自hiera
的值将在 accont 中被专制地采用。
您还需要在profile::mq中声明您的参数:
class profile::mq($user, $pass, $host) {
class { 'profile::mq':
user => $user,
pass => $pass,
host => $host
}
...
..
}
class rabbitmq($user, $pass, $host) {
...
}
在这里,您将使用 class { rabbitmq: params }
而不是使用 include
来实例化您的 rabbitmq
类,这样您就可以将profile::mq
参数传递给rabbitmq
类。
希望这有帮助