user630702
user630702

Reputation: 3127

Puppet - undefined local variable

I'm getting undefined error but it is defined already. I'm sure this was working before (maybe in puppet 3) but I'm trying to use that code on puppet 6 (on a new server).

Any idea what is the issue? Here is the error code:

 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 

Here is the code:

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"),
    }
}

Here is the template content:

cat resolv.conf.erb

domain <%= domain %>

Upvotes: 2

Views: 1420

Answers (1)

user630702
user630702

Reputation: 3127

Figured it out.

All Puppet variables need to be prefixed with @ in Puppet 4+

So resolv.conf.erb should look like

domain <%= @domain %>

Upvotes: 3

Related Questions