我有以下木偶设置(非常简单):
/etc/puppet/manifests/site.pp:
node 'node.my.domain' {
$nodeclass = 1
notify { "(INFO) nodeclass = $nodeclass": }
class { "foobar": }
}
/etc/puppet/modules/foobar/manifests/site.pp:
class foobar {
notify { "(INFO) in foobar: nodeclass = nodeclass": }
}
在 上node.my.domain
,我运行:
node# puppet agent -t
我收到以下输出:
信息:检索插件信息 信息:正在检索插件 信息:正在加载事实 信息:node.my.domain 的缓存目录 信息:应用配置版本“1496349702” 注意:(INFO)nodeclass = 通知:/Stage[main]/Foobar/Notify[(INFO) in foobar: nodeclass = ]/message: 将“message”定义为“(INFO) in foobar: nodeclass = ' 通知:目录运行完毕,剩余 0.50 秒
ie$nodeclass
为空。如何从类中正确访问节点范围变量?
答案1
范围级继承已经过时,应该用类参数代替。另外,您的目录结构是错误的。
/etc/puppetlabs/code/manifests/site.pp
node 'node.my.domain' {
$nodeclass = 1
notify { "(INFO) nodeclass = ${nodeclass}": }
class { "foobar":
nodeclass => $nodeclass,
}
}
/etc/puppetlabs/code/modules/foobar/manifests/init.pp
class foobar(
$nodeclass,
){
notify { "(INFO) in foobar: nodeclass = ${nodeclass}": }
}