名前空間とクラス名が競合するのはなぜですか?

名前空間とクラス名が競合するのはなぜですか?

と呼ばれる puppet モジュールがインストールされていますntp

ノードは次のように定義します

node testip { include myconfig::ntpp }

そして/etc/puppet/modules/myconfig/manifests/init.pp私は

class myconfig::ntpp {
  include common
  class {'ntp':
      server_list => $common::data::ntpServerList
  }
}

これは完璧に動作します。

しかし、これmyconfig::ntppを に置き換えるとmyconfig::ntp

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Class[Myconfig::Ntp] is already declared; cannot redeclare on node testip

質問

ノードを次のようにすることは可能ですか?

node testip { include myconfig::ntp }

答え1

これは、Puppetがクラス名を解決しようとする方法に関する設計上の問題です。詳細はこのチケットをご覧くださいまたは名前空間に関するこのリンク

NTPそして、トップレベルのモジュールにアクセスするには、

class { "::ntp":
   server_list => ...
}

関連情報