覆盖其他 class 中的人偶变量
Override puppet variable in other class
我在清单中使用 postgresql puppetlabs 模块。他们有一个名为 $service_manage
的参数,在 params.pp
文件中默认设置为 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' }
}
但是失败并出现此错误,
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
我也试过这个
class postgresql::params { $service_manage = "false" }
但这也行不通。
您应该使用参数直接 declare/include class,而不是试图间接操纵 params
class。该 class 正在此模块中继承默认值和逻辑。其实注意:https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/params.pp#L1
继承该参数的实际 class 是 postgresql::server
。因此,当您声明 class 时,您想像这样覆盖参数:
class { 'postgresql::server': service_manage => false }
它会为您正常工作。
还值得注意的是,params.pp
中 $service_manage
的 if
代码块实际上并不存在,如果最佳实践使用该设计模式,则不应存在.
我在清单中使用 postgresql puppetlabs 模块。他们有一个名为 $service_manage
的参数,在 params.pp
文件中默认设置为 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' }
}
但是失败并出现此错误,
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
我也试过这个
class postgresql::params { $service_manage = "false" }
但这也行不通。
您应该使用参数直接 declare/include class,而不是试图间接操纵 params
class。该 class 正在此模块中继承默认值和逻辑。其实注意:https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/params.pp#L1
继承该参数的实际 class 是 postgresql::server
。因此,当您声明 class 时,您想像这样覆盖参数:
class { 'postgresql::server': service_manage => false }
它会为您正常工作。
还值得注意的是,params.pp
中 $service_manage
的 if
代码块实际上并不存在,如果最佳实践使用该设计模式,则不应存在.