2017-01-20 10 views
0

を持つクラスを宣言私は現在、私はしかし、私は/etc/puppet/manifests/site.ppでこれらのクラスを宣言する問題が生じています/etc/puppet/modules/params/manifests/init.pp人形は:継承

class modulename ($variable_name = 'Any string') inherits modulename::params{ 
    file { '/tmp/mytoplevelclass.sh' : 
    mode => '644', 
    ensure => 'present', 
    content => $variable_name 
    } 
} 

class modulename::params{ 

} 

内で作成された2つのクラスを持っています。現在、私はそれは私がクライアント上でpuppet agent -tを実行したときに、私はというエラーを取得しているため、これは間違っていることを知っている

node default { #client 
    class { 'modulename':} 
    class { 'modulename::params':} 
} 

として書かれている

は、クラスモジュール名は/ etc /人形で宣言されて見つけることができませんでした/manifests/site.pp

私はいくつかの異なる構成を試しましたが、やはり何をすべきかは不明です。

答えて

2

Puppetは、クラスの完全修飾名に基づいてクラス定義を見つけることが予想されるファイルを決定します。ドキュメントは詳細に入ります。特に、Module Fundamentalsを確認する必要があります。 (私はあなたが人形3にいると推測していますが、私が議論しようとしている詳細は人形4では変わりません)。

/etc/puppet/modulesがあなたのモジュールパスのディレクトリであるとすれば、 )あなたのmodulenameモジュール、実際にあなたが行っていることを示しています。モジュールパスにない場合は、モジュールをモジュールパスのディレクトリに移動するか、そのディレクトリをモジュールパスに追加する必要があります。後者の方法でこの種の問題を解決することを前提としているので、/etc/puppet/modules/modulenameは有効なモジュールディレクトリです。

クラス 'modulename'は、その名前もモジュール名である点で少し特殊です。したがって、/etc/puppet/modules/modulename/manifests/init.ppで定義する必要があります。一方、クラスmodulename::paramsは、通常のパターンに従い、/etc/puppet/modules/modulename/manifests/params.ppで定義されています。定義を正しいファイルに入れると、Puppetはその定義を見つけることができます。

ボーナスアドバイス:

  • あなたのノードブロックは、おそらくすべての
  • modulename::paramsを宣言するべきではありません