現在、sensu構成を管理するためのpuppetモジュールを作成しています。
全体をいくつかのクラスに分割し、それらをsensuの「manifests」ディレクトリ内のそれぞれのファイルに配置しました。
sensu::common (common.pp)
sensu::common::package (common/package.pp)
sensu::common::config (common/config.pp)
sensu::server (server.pp)
sensu::server::config (server/config.pp)
私のserver.pp
には、次のものがあります
class sensu::server {
include sensu::common
include sensu::server::config
Class['sensu::common'] -> Class['sensu::server::config']
}
そして、nodes.pp
は次のようになります。
class role_monitoring_server {
$my_role = 'monitoring_server'
...
include sensu::server
}
node my_cool_server {
include role_monitoring_server
}
ご想像のとおり、server.pp
のクラス依存関係に問題があります。
Class['sensu::common'] -> Class['sensu::server::config']
ただ動作しません。クラスsensu::server::config
は、ファイルをディレクトリに配置する必要があります。このファイルは、sensu::common
によってのみ作成されます。重要なのは、sensu::server::config
は常にsensu::common
の前に適用され、期待どおりに適用されないということです。
何が恋しいですか?ウェブ上にはたくさんの質問がありますが、何を探すべきかわからないので、答えが見つかりません。
sensu::common
クラスとの依存関係を作成していますが、sensu::common
とその「子」、package
およびconfig
の間に暗黙の依存関係はありません。したがって、構成が別の方法で表示されない限り(sensu::common
クラスは数行のinclude
行であると想定していますか?)、それらはsensu::server::config
クラスに関連していつでも自由に適用できます。
必要なリソースを含むクラスとの関係を構築することをお勧めします。 1つのクラスの各リソースと他のクラスの各リソース(これらのいずれか、または両方が必要)に対してrequire関係を効果的に作成しています。
Class['sensu::common::package'] -> Class['sensu::server::config']
Class['sensu::common::config'] -> Class['sensu::server::config']