【问题标题】:Override puppet variable in other class覆盖其他类中的 puppet 变量
【发布时间】:2017-01-20 06:25:39
【问题描述】:

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

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' }
}

但由于此错误而失败,

服务器:评估错误:评估资源语句时出错,重复声明:Class[Postgresql::Params] 已声明;无法在 /etc/puppet/modules/mypostgres/config.pp:4 重新声明

我也试过了

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

但这也行不通。

【问题讨论】:

    标签: overriding puppet


    【解决方案1】:

    您应该使用参数直接声明/包含该类,而不是尝试间接操纵params 类。该类在此模块中被继承用于默认值和逻辑。其实注意:https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/params.pp#L1

    继承该参数的实际类是postgresql::server。因此,当您声明该类时,您希望像这样覆盖参数:

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

    它会为你正常工作。

    还值得注意的是,params.pp 中用于 $service_manageif 代码块实际上并不存在,如果最佳实践使用该设计模式,则不应该存在。

    【讨论】:

    • 没错,这就是我要找的。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-07-23
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多