1

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

class profile:mq {
include rabbitmq
}

class rabbitmq (
$user, $pass, $host ) {
...logic...
}

我想使用 hiera 自动查找通过 profile::mq 类在 rabbitmq 中填写参数(例如 profile::mq:rabbitmq::user:"value",而不是 rabbitmq::user:"value") 我的猜测是封装 rabbitmq 但不确定如何在 puppet 中执行。

4

3 回答 3

2

自动数据绑定:好计划。

但是,它根本无法按照您的建议方式工作。给定类查找其参数值的层次键仅取决于类和参数名称。它们独立于该类的任何和所有声明的轨迹。否则不可能,因为同一类的多个声明可能会针对同一目标节点进行评估,并且——因为类是单例——它们都声明了同一个类(实例)。

可以通过将 rabbitmq 参数值放在 Hiera 层次结构的配置文件特定级别中来实现您的目标。这对我来说不太合适,但它可能足以满足您的目的。

于 2015-04-23T01:03:18.087 回答
2

你只需要定义:

rabbitmq::user: some_user
rabbitmq::pass: some_password
rabbitmq::host: some_host

hiera层次结构中的正确配置文件中。from 的值hiera将被专制地考虑在内。

于 2015-04-22T20:47:47.017 回答
-2

您还需要在 profile::mq 中声明您的参数:

class profile::mq($user, $pass, $host) {
  class { 'profile::mq':
    user => $user,
    pass => $pass,
    host => $host
  }
  ...
  ..
}

class rabbitmq($user, $pass, $host) {
  ...
}

在这里,您将使用而不是 using实例化您的rabbitmq类,这样您就可以将参数传递给类。class { rabbitmq: params }includeprofile::mqrabbitmq

希望这可以帮助

于 2015-04-22T20:54:38.997 回答