通过其他模块访问模块的傀儡访问参数



我正在尝试处理以下情况:

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类。

希望这有帮助

最新更新