On Wednesday, February 20, 2013 11:10:50 AM UTC-6, Dan wrote:
>
> Hi,
>
> I've defined a hash like so in my nodes.pp:
>
> net::addr { "eth5":
>         rt => {
>                 rt1 => {
>                         address => '192.168.10.0',
>                         netmask => '255.255.255.0',
>                         gateway => '192.5.28.19',
>                         src     => '192.5.28.21'
>                 },
>         }
>
> What I can't get to access is the title of the hash in my templates, so I 
> want to print out the title of the hash i.e. "eth5", how can I do that? 
> Also I have a variable called $int in my define class in the file for my 
> module (/etc/puppet/modules/net/manifests/addr.pp), how can I access that 
> using the scope.lookupvar function from this template in the same module?
>
"eth5" is not the name/title of a hash, it is the title of a *resource* of 
defined type 'net::addr'.  That resource has a parameter 'rt' that is a 
hash of hashes.  Inside the resource, you can access the title as $title or 
$name (either one).  Inside a template evaluated by a template() or 
inline_template() call from within the definition body, you should be able 
to access it as @title or @name (and the hash as @rt).

Resources are not data objects for consumption by the catalog compiler 
(except classes, inasmuch as those are sometimes cast as resources).  You 
should not attempt to use them as such.  What you could do, however, would 
be something along these lines:

class net {
  $addresses = {
    'eth5' => {
      rt => {
        rt1 => {
          address => '192.168.10.0',
          netmask => '255.255.255.0',
          gateway => '192.5.28.19',
          src => '192.5.28.21'
        }
      }
    }  
  }
}

You can then access it as $net::addresses['eth5'] from Puppet DSL, and you 
can use scope.lookupvar('net::addresses') to retrieve the hash, and then 
access the value of its 'eth5' key.


John

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to