私は、0.xから1.0のリリースまで、Puppetを多用していましたが、その後ジョブを変更しましたが、今度は戻ってきました。人形のHieraは私には新しく(他にもたくさんのものがあります)。Hiera経由でホスト名に基づいてノードにクラスを割り当てる
私は、Hieraと一致するホスト名(または証明書名)パターンに基づいてノードのグループにクラスを割り当てることは基本的に不可能だと正しく理解していますか?
私は、たとえば、ホストが "ntp1.foo.com"のようなものだった場合、ntpサーバクラスを割り当てることができました。これは、node
の定義がsite.pp
のストレートでかなり簡単です。私はこの概念をHieraベースの世界に移そうとしています。私はHieraに他のクラスを割り当てていて、それらの割り当てのすべてを1か所にまとめることを望んでいました。
Hiera以外の手段でパラメータを設定し、その値をHieraでパスにマッチさせるためにこれを行うには、これを行うしか方法はありません。例えば、私はこのようなパラメータをエクスポートし、私のenc
スクリプトで:
echo "parameters:"
if [ ... ]; do echo " ntpRole: server; else echo " ntpRole: client"; fi
とHieraに私のようなものだろう:
- "roles/ntp-%{ntpRole}"
を、私は1つが、カスタム事実を経由してこの操作を行うことができると思います。
これは機能しますが、クルージュのようです。より良い/推奨される選択肢がありますか?これで
一つの問題は、すべてのノード必見は(すべてがNTP-何かクラスが割り当てられている)の値を持っているということです。これはNTPのために働きます。なぜなら、すべてのマシンはNTPのクライアントかサーバーのどちらかですが、存在しないものはないからです。
たとえば、Webサーバーの役割。いくつかのマシンはWebサーバではないので、私はそのクラスを含めたくないのですが、私はそうしていますが、ノードごとのファイルでそれを維持する必要は本当にありません。どこでも空の*-none
ロールクラス(例えば、web-none
対web-server
)。 www*
という名前のマシン、または他の基準に基づいて、roles/web
クラスをロードします。これはHieraでできますか?
これには外部カスタムファクトが使用されているため、ファクトにはそのノードが属するロールのロジックがあり、ヒエラではそのファクトを使用してロールクラスを組み込むことができます。 – Walid