覆盖其他类

时间:2017-01-20 06:25:39

标签: override puppet

我在清单中使用postgresql puppetlabs模块。默认情况下,$service_manage文件中有一个名为true的参数设置为params.pp,所以看起来像

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

我想要的是我想将变量$service_manage的值设置为false,以便if块不适用于我的清单。我正在使用它,

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

但它没有出现这个错误,

  

SERVER:评估错误:评估资源声明时出错,重复声明:类已经声明了[Postgresql :: Params];无法重新声明/etc/puppet/modules/mypostgres/config.pp:4

我也试过这个

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

但这也行不通。

1 个答案:

答案 0 :(得分: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代码块实际上并不存在,如果最佳实践使用该设计模式,则不应该存在。< / p>