Puppet - 未定义的局部变量

标签 puppet

我收到未定义的错误,但它已经定义了。我确信这之前可以工作(也许在 puppet 3 中),但我尝试在 puppet 6(在新服务器上)上使用该代码。

知道问题出在哪里吗?这是错误代码:

 Error: Error while evaluating a Function Call, Failed to parse template resolv/resolv.conf.erb:\n 
 Filepath: /etc/puppetlabs/puppet/modules/resolv/templates/resolv.conf.erb\n  Line: 1\n  
 Detail: undefined local variable or method `domain' for #<Puppet::Parser::TemplateWrapper:0x60d6ba83>\n 

这是代码:

class resolv {
    case $hostname {
        /^[Abc]/: {
            resolv:resolv_config { 'Default':
                domain => "mydomain.local",
            }
        }
    }
}

define resolv::resolv_config($domain){
    file { '/etc/resolv.conf':
        content => template("resolv/resolv.conf.erb"),
    }
}

模板内容如下:

cat resolv.conf.erb

domain <%= domain %>

最佳答案

想通了。

在 Puppet 4+ 中,所有 Puppet 变量都需要以 @ 为前缀

所以resolv.conf.erb应该看起来像

domain <%= @domain %>

关于Puppet - 未定义的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61894357/

相关文章:

provisioning - 如何使用 puppetlabs/apt 模块?

linux - 使用puppet创建动态大小的lvm

ubuntu - centos 上的 puppet fact 失败但在 ubuntu 中有效

php - 用于简单 LAMP 开发的 Chef/Fabric/Puppet 替代方案?

linux - 为什么 puppet 资源在指定提供者时表现不同

ruby - puppet getvar() 函数不工作

java - 应用配置管理工具

ruby - 在 ruby​​ 中 grep 或过滤 linux 输出以获取自定义事实

puppet - 在 Puppet 中迭代哈希键/值

puppet - CentOS 7和Puppet无法安装nc