Puppet 通过其他模块访问模块的参数
Puppet access parameters of module through other module
我正在尝试处理以下情况:
class profile:mq {
include rabbitmq
}
class rabbitmq (
$user, $pass, $host ) {
...logic...
}
我想通过profile::mqclass使用hiera自动查找来填充rabbitmq中的参数(例如profile::mq:rabbitmq::user:"value",不是 rabbitmq::user: "value") 我的猜测是封装 rabbitmq 但不确定如何在 puppet 中进行封装。
您只需定义:
rabbitmq::user: some_user
rabbitmq::pass: some_password
rabbitmq::host: some_host
在 hiera
层次结构中的适当配置文件中。来自 hiera
的值将被独裁地考虑在内。
您还需要在 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
class,这样您就可以将 profile::mq
参数传递给 rabbitmq
class.
希望这对您有所帮助
自动数据绑定:好计划。
但是,它根本无法按照您建议的方式工作。给定 class 用来查找其参数值的 hiera 键仅取决于 class 和参数名称。它们独立于 class 的任何和所有声明的轨迹。不可能是其他情况,因为相同 class 的多个声明可能会针对同一目标节点进行评估,并且 - 因为 classes 是单例 - 它们都声明相同的 class (实例)。
您可以通过将 rabbitmq 参数值放在 Hiera 层次结构的特定配置文件级别中来实现您想要的。我觉得这不太合适,但它可能足以满足您的目的。
我正在尝试处理以下情况:
class profile:mq {
include rabbitmq
}
class rabbitmq (
$user, $pass, $host ) {
...logic...
}
我想通过profile::mqclass使用hiera自动查找来填充rabbitmq中的参数(例如profile::mq:rabbitmq::user:"value",不是 rabbitmq::user: "value") 我的猜测是封装 rabbitmq 但不确定如何在 puppet 中进行封装。
您只需定义:
rabbitmq::user: some_user
rabbitmq::pass: some_password
rabbitmq::host: some_host
在 hiera
层次结构中的适当配置文件中。来自 hiera
的值将被独裁地考虑在内。
您还需要在 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
class,这样您就可以将 profile::mq
参数传递给 rabbitmq
class.
希望这对您有所帮助
自动数据绑定:好计划。
但是,它根本无法按照您建议的方式工作。给定 class 用来查找其参数值的 hiera 键仅取决于 class 和参数名称。它们独立于 class 的任何和所有声明的轨迹。不可能是其他情况,因为相同 class 的多个声明可能会针对同一目标节点进行评估,并且 - 因为 classes 是单例 - 它们都声明相同的 class (实例)。
您可以通过将 rabbitmq 参数值放在 Hiera 层次结构的特定配置文件级别中来实现您想要的。我觉得这不太合适,但它可能足以满足您的目的。