ディレクティブを適用しているノードに応じて、Rudderに構成を動的に設定させるにはどうすればよいですか?
例: -数百のノードを管理し、各ノードには、各ノードに固有の32桁のパスワードを含むファイル「storage_password」があるはずです。
すべての単一ノードに対して[ディレクティブ、ルール、グループ]の一意のタプルを作成することは明らかに間違っていると感じ、面倒で不必要に思えます。
($prefix_${variable_suffix})
の意味での動的変数について考えました。ここで、variable_suffix = "hostA"
であり、パスワードを含むprefix_hostA
という変数があります。 variable_suffixは、ノードのホスト名になります。
ただし、これが可能かどうか、またはそれがより推奨されるアプローチであるかどうかはわかりません。
variable dict method は方法のようですが、ディレクティブで使用できるかどうかはわかりません。現在、機能させるのに問題があります。
どのように進めればよいですか?
パスワードの場合について説明しましたが、ノードごとにVPN構成を設定するなど、そのような動作が必要になる状況もあります。
背景:会社はPuppetからRudderに移行しており、Puppetで使用している合理的に単純な機能を使用してRudderをミラーリングする必要があります。 Puppetを使用すると、上記のタスクは非常に簡単です。
これを行うにはいくつかの方法があります-そして、各ノードのルールを作成することは正しいものではないことは正しいです:)
より一般的なコンテキストに応じて、可能性のリストに従います。
ノードプロパティ
これを行う最も一般的な方法は、ノードプロパティ、つまり各ノードに固有で、ディレクティブでユーザーになることができるプロパティを使用することです。ドキュメントはここにあります: https://docs.rudder.io/reference/5.0/usage/advanced_configuration_management.html#_node_properties そしてあなたは入門マニュアルの使用例です:定義 https://docs.rudder.io/get-started/current/node-management/data.html および使用法: https://docs.rudder.io/get-started/current/ Advanced-configuration/apply.html
ノードは、ノードプロパティ、つまりラダーではなくノードファイルシステムで定義できるプロパティ値に対して「ローカルオーバーライド」を持つことができますNode detail( https: //docs.rudder.io/reference/5.0/usage/advanced_configuration_management.html#_node_properties )
外部RESTAPIのノードプロパティを「データソース」ラダープラグインと同期できます https://docs.rudder.io/reference/5.0/plugins/datasources.html
ノード環境からの変数
ファイルの内容、コマンド出力など、ノード上のものから変数を定義できます。
このような変数は、標準ライブラリの変数手法(「その他」のカテゴリ)を使用して定義できます。たとえば、Variable from JSON file (dict)
を使用すると、構文_${variable_prefix.variable_name[json-key][json-subkey]}
_を使用してディレクティブパラメーターで使用できる変数としてjsonファイルをロードできます。 _variable from command
_、またはvariable (string)
もあります。
テクニックエディタからテクニックを構築する場合は、対応する汎用メソッドがあります。たとえば、コマンドの結果から変数を作成できる(中断する)「変数からの変数」など、「変数」カテゴリのメソッドを探します。または、jsonファイルのコンテンツの場合、あなたが言ったように、「プレフィックスからの変数dict」。これらのメソッドは、ディレクティブでも使用できます。
これらのディレクティブを使用するときは、使用する前に変数を定義する必要があることに注意してください。そのため、ポリシーの順序を確認してください。 https://docs.rudder.io/reference/5.0/usage/advanced_configuration_management.html# _directives_ordering
テンプレート
より複雑なテンプレート作業が必要な場合は、ここで説明されているようにjinjaまたは口ひげを使用できます: https://docs.rudder.io/rudder-by-example/current/files/advanced-file-templating.html
Vault
Rudder 5.0では、Vaultインストールからシークレットを取得できるVaultプラグインを追加しました: https://github.com/Normation/rudder-plugins/tree/master/vault
古いリソース
あなたはそれが: https://www.mauras.ch/rudder-fun-with-variables.html なしで忘れられた時代にどのように行われていたかについてのいくつかの情報を見つけることができます
もう1つ
それはあなたの問題に直接関係していませんが、それは反対の問題なので、関係がある可能性があります。標準のインベントリデータにないノードからインベントリ情報を取得し、これらのデータを使用してグループを構築したい場合は、「ノードインベントリフック」を使用してインベントリを拡張できます。 https://docs.rudder .io/reference/5.0/Usage/advanced_node_management.html#extend-nodes-inventory
それが役に立てば幸い!