Search code examples
puppet

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 %>

Solution

  • Figured it out.

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

    So resolv.conf.erb should look like

    domain <%= @domain %>