1

次の状況に対処しようとしています。

class profile:mq {
include rabbitmq
}

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

profile::mq クラス (たとえば、profile::mq:rabbitmq::user: "value" であり、rabbitmq::user: "value" ではありません) を使用して、rabbitmq のパラメーターを入力するために hiera 自動ルックアップを使用したいと思います。 rabbitmq をカプセル化しますが、パペットでそれを行う方法がわかりません。

4

3 に答える 3

2

次のように定義するだけです。

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

hiera階層内の適切な構成ファイル。からの値はhiera独裁的に採用されます。

于 2015-04-22T20:47:47.017 に答える
2

自動化されたデータ バインディング: 良い計画です。

ただし、提案した方法では機能しません。特定のクラスがそのパラメーター値を検索するための hiera キーは、クラスとパラメーターの名前のみに依存します。それらは、そのクラスのすべての宣言の場所から独立しています。同じターゲット ノードに対して同じクラスの複数の宣言が評価される可能性があり、クラスはシングルトンであるため、それらはすべて同じクラス (インスタンス) を宣言するため、それ以外の方法はありません。

Rabbitmqパラメーター値を Hiera 階層のプロファイル固有のレベルに配置することで、目的を達成できる場合があります。それは私にはあまり適切ではありませんが、あなたの目的には十分に役立つかもしれません.

于 2015-04-23T01:03:18.087 に答える
-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 }includeprofile::mqrabbitmq

お役に立てれば

于 2015-04-22T20:54:38.997 に答える