2017-01-20 2 views
2

私はマニフェストにpostgresql puppetlabsモジュールを使用しています。これらは一つのパラメータをparams.ppファイルにデフォルトでtrue$service_manageセットと呼ばれるので、それはまさに私が欲しいが、私はfalseとして変数$service_manageの値を設定したいということです他のクラスの人形変数をオーバーライドします

class postgresql::params inherits postgresql::globals { 
    $service_manage = true 
    if $service_manage { 
     # do something 
    } 
} 

のように見えてきたifをするようにブロックは私のマニフェストには当てはまりません。私は、このよう

class mypostgres::config { 
    class { 'postgresql::params' : service_manage => 'false' } 
} 

を、それを使用しています。しかし、それは私もこの

class postgresql::params { $service_manage = "false" } 

試してみたが、これも動作しません、このエラーで

SERVER: Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: Class[Postgresql::Params] is already declared; cannot redeclare at /etc/puppet/modules/mypostgres/config.pp:4

を失敗しています。

答えて

2

パラメータを使用してクラスを直接宣言/インクルードし、paramsクラスを間接的に操作しようとはしません。このクラスはデフォルトとロジックのためにこのモジュールで継承されています。実際には、注:https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/params.pp#L1

このパラメータを継承する実際のクラスはpostgresql::serverです。したがって、そのクラスを宣言するときは、次のようにパラメータをオーバーライドします。

class { 'postgresql::server': service_manage => false } 

これは正しく動作します。

if内のコードブロックparams.pp$service_manageのために実際には存在しません。そのデザインパターンがベストプラクティスによって使用されている場合は存在してはいけません。

+0

正確には、私が探していたものです。どうもありがとうございます。 – Rahul

関連する問題