I am using puppet version 6.2 (the one that comes with squeeze) in case it 
makes a difference.

I am new to puppet and am having a problem getting access to the elements 
of a hash in my erb templates and no matter what I google for I cannot seem 
to find out what I am doing wrong. 

I have stripped everything back to example code to rule out other things, 
in reality I have split my files up a but to avoid the monolithic init.pp 
and nodes.pp. Anyway...

my nodes.pp has this in it:

node 'pc01.domain.com' {

  # Test code
  $myhash = { 
    key => { 
      subkey1 => 'foo',
      subkey2 => 'bar'
    }
  }

  include mymodule
}

Then in the modules init.pp I have:

class mymodule {
  # Test code
  notice($myhash[key][subkey1])
  notice($myhash[key][subkey2])
  file { "/tmp/test":
    ensure => present,
    content => template("mymodule/test.erb"),
  }
}

If I run puppet against this the two notice lines work fine so I have 
access to the data within the module, the problem is getting it into the 
template. I tried a few different syntaxes to no effect:

So first I tried a template like so:
TEST: <%= $myhash[key][subkey1] %>

This gave me the error:
*err: Could not retrieve catalog from remote server: Error 400 on SERVER: 
Failed to parse template mymodule/test.erb: Could not find value for 'key' 
at /etc/puppet/modules/mymodule/manifests/init.pp:7 on node pc01.domain.com*

If I quote the string in the template (i.e. "<%= $myhash[key][subkey1] %>") 
then it just spits out that string into the file rather than interpreting 
the data.

I have similar errors if I try to use scope.lookupvar to explicitly specify 
where things are too.

So, what am I doing wrong or is it just not possible to pick a single hash 
element and put it into a template.

Thanks
Josh
p.s. my Ruby sucks so if I have to go down that route it'll need to be a 
noddy explanation

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/puppet-users/-/nSPGiquUVBIJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to