动态变量作为类名的一部分

Gab*_*ker 3 puppet

我试图动态包含一个基于变量的类,它工作正常,但是然后尝试在该动态包含的类中查找变量.

class servers::something::something2(
  $query_cache_type = "Off",
  ) {
    $params_file = "servers::something::${::env}"
    include "${params_file}"
    $rp1 = "${params_file}::root_passwd"
    $rp2 = $servers::something::dev::root_passwd
    notify{"The value is: ${params_file}": }
    notify{"The value is: ${rp1}": }
    notify{"The value is: ${rp2}": }

}
Run Code Online (Sandbox Code Playgroud)

给我这样的输出:

Notice: The value is: servers::mysql::dev
Notice: The value is: servers::mysql::dev::root_passwd
Notice: The value is: some_pass
Run Code Online (Sandbox Code Playgroud)

如何让rp1(值的动态查找)正常工作?

Lod*_*rds 7

而不是使用内联模板,安装Puppetlab的stdlib模块要好得多,它提供了许多优秀的功能,比如getvar.

一旦你完成了这个,你就可以简单地写

$rp1 = getvar("${params_file}::root_passwd")
Run Code Online (Sandbox Code Playgroud)

你完成了 这是一个例子:

class x::y {
  $z = "hello world"
}
include x::y    
$i = "x::y"
alert( getvar ( "${i}::z" ) ) # outputs "hello world"
Run Code Online (Sandbox Code Playgroud)