![puppet 类没有从 site.pp 节点定义继承变量](https://linux22.com/image/705275/puppet%20%E7%B1%BB%E6%B2%A1%E6%9C%89%E4%BB%8E%20site.pp%20%E8%8A%82%E7%82%B9%E5%AE%9A%E4%B9%89%E7%BB%A7%E6%89%BF%E5%8F%98%E9%87%8F.png)
我有以下木偶设置(非常简单):
/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}": }
}