私は現在、Craig Dunn のロール/プロファイル パラダイムを使用して新しいパペット リポジトリを構築しており、ノード定義を減らしてロールのみを含めようとしている (予見可能な) 問題に遭遇しました。
私は、一般的なクラスの基本的な差別化のためにグローバル変数(デフォルトはトップスコープで定義)を使用しています(たとえば、どのユーザーがsshアクセスを取得するかを決定します)。しかし、ノード定義でそれらをオーバーライドしたくないので、プロファイルでそれらを設定する良い方法を探しています。
基本的に私の問題は、パペットの静的スコープです。動的スコープのように子に継承されず、モジュールで修飾名を呼び出すことができないため、役割クラスでそれらをオーバーライドすることはできませんどのクラスから呼び出されたかわからないためです。
問題を解決するためにこれまでに持っていた私のアイデア:
最上位のスコープでロールを定義し、そこで変数をオーバーライドし
ます。他のすべてが失敗した場合、これはおそらく汚い回避策になります。クラスが実際にそれをオーバーライドする機能を備えたある種のサブトップスコープを取得するかどうかはわかりませんが。hiera がそれを呼び出したモジュール/クラス階層を認識できるかどうかを確認し、対応する値を教えてください。残念ながら、hiera の適切なドキュメント/チュートリアルをまだ見つけることができませんでした。
継承地獄を作る - 私はしたくないし、それについて考えてみると、それは不可能に思えます
パラメータ化されたクラスの地獄を作成します - 時間が経つにつれて、通過する変数が多くなり、多くの冗長性とエラーの原因につながります
プロファイルに含まれるトップ スコープ クラスを作成します。繰り返しますが、これが機能するかどうかはわかりません(1)を参照)
できるだけ汚れていない、これに対する良い解決策を誰かが持っていますか? または、私が持っているアイデアの 1 つを確認できますか?
ところで、パペット ダッシュボードを ENC として使用し、すぐにログに記録したいので、ノード定義をロールに減らしたいと思います。