Hi,

I have an issue with templates and variable lookup when used in wrapped defines 
- which was working in older puppet versions (maybe due to the dynamic variable 
lookup):

e.g. The following code:

The first define setting a local variable and calling a second define with a 
parameter:

cat define1/manifests/init.pp
define define1 {
  $var = 'test'
  define2 { “define1_${name}":
    template => 'define1/test.erb',
  }
}

The second define using a resource type and makes use of the parameter:

cat define2/manifests/init.pp
define define2 ($template) {
  notify { "define2_${name}":
    message => template($template),
  }
}

The template which should be used in the second define (handed over as 
parameter):

cat define1/templates/test.erb
test = <%= @var %>

The result:

puppet apply -e 'define1 { 'test': }'
Notice: Compiled catalog for puppetmaster.example.net in environment production 
in 0.33 seconds
Notice: test =

Notice: 
/Stage[main]/Main/Define1[test]/Define2[define1_test]/Notify[define2_define1_test]/message:
 defined 'message' as 'test =
'
Notice: Applied catalog in 0.03 seconds


If the first define would be a class then I could do a scope.lookupvar.
If I change the template to do scope.lookupvar I receive the following:

puppet apply -e 'define1 { 'test': }'
Warning: Scope(Define2[define1_test]): Could not look up qualified variable 
'define1::var'; class define1 could not be found
Notice: Compiled catalog for puppetmaster.example.net in environment production 
in 0.32 seconds
Notice: test =

Notice: 
/Stage[main]/Main/Define1[test]/Define2[define1_test]/Notify[define2_define1_test]/message:
 defined 'message' as 'test =
'
Notice: Applied catalog in 0.03 seconds

How can I access the variable from the first define?
I can change the second define to have another parameter so it knows about the 
template variable.
Is there any other solution available?

Thanks,
Martin

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/BB42D49A-3D69-41A3-8197-18B2E182DD4B%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to