You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Puppet 6中模板调用出现未定义局部变量`domain`错误排查求助

解决Puppet 6模板未定义变量的问题

嘿,这个版本升级的坑我之前也踩过!你遇到的问题核心是Puppet 3到6之间模板变量作用域的规则变化,导致原本能直接访问的变量在新版本里找不到了。

问题根源

在Puppet 3中,模板可以直接引用define或者类里的参数名(比如你用的domain);但从Puppet 4开始(包括你现在用的6),模板的作用域机制做了调整:define的参数会被作为实例变量传入模板,必须通过@变量名的形式才能访问,直接写变量名会被当成模板本地未定义的变量,所以才会抛出那个错误。

具体修复步骤

只需要修改你的resolv.conf.erb模板内容:
原来的模板代码:

domain <%= domain %>

改成:

domain <%= @domain %>

额外验证

你的define和类的参数传递逻辑是没问题的:

  • resolv::resolv_config定义时接收$domain参数
  • 调用时传入了domain => "mydomain.local"
    只要模板里改成@domain,就能正确获取到这个参数值了。

内容的提问来源于stack exchange,提问作者user630702

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:32:39