web-dev-qa-db-ja.com

モジュール内のPuppetクラスの依存関係

現在、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の前に適用され、期待どおりに適用されないということです。

何が恋しいですか?ウェブ上にはたくさんの質問がありますが、何を探すべきかわからないので、答えが見つかりません。

3
Tobias

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']
2
Shane Madden