我试图动态包含一个基于变量的类,它工作正常,但是然后尝试在该动态包含的类中查找变量.
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(值的动态查找)正常工作?
而不是使用内联模板,安装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)