On Friday, January 16, 2015 at 12:48:19 PM UTC-6, Weeve wrote:
>
> On Thu, Jan 15, 2015 at 9:53 AM, jcbollinger <john.bo...@stjude.org 
> <javascript:>> wrote: 
> > 
> > In any case, if $foo does not resolve to a class or resource reference, 
> then 
> > why does catalog building succeed?  (Or perhaps the problem actually 
> > manifests as catalog building failure....) 
>
> Feels like I've been staring at the problem too long, forgetting to 
> provide a little more detail here. 
>
> When I have requires = $foo, the catalog does compile and $foo does 
> resolve to Class['a'] or Class['b'] correctly when I look at the debug 
> output from the Puppet agent (puppet agent -tv --debug). 
>
> If I use the anchor method as well ($foo -> Class['a]), it wasn't 
> installing it in the preferred order as well, but if I use the anchor 
> method on the Service Type that Class['a'] provides in its service.pp, 
> then it worked for me. 
>


There seems to be a bit of a terminology gap here.  Class['a'] does not 
"have" a service.pp in any useful sense of the term.  I suppose you 
probably mean that *module* 'a' has a class or defined type "a::service" 
whose definition resides in modules/a/manifests/service.pp.  The 
distinction matters, as does, in particular, whether a::service is a class 
or a defined type.  (In a typical module architecture, such a thing would 
be a class.)

Moreover, it's unclear what you mean when you say you "use the anchor 
method on the Service Type [...]."  I can probably guess roughly what you 
mean, but here, too, the details matter.  We can give better answers if you 
present code that actually exhibits the problem -- preferrably *minimal* 
code that does so.

 

>
> >> This should work: 
> >> 
> >> $foo = "a" 
> >> 
> >> File["/path/to/file"] { require => Class[$foo] } 
> >> 
>
> This method allowed the catalog to compile as well, but didn't change 
> any of the ordering issues. 
>
>

My best guess at this point is that you have a class containment issue 
<https://docs.puppetlabs.com/puppet/latest/reference/lang_containment.html#containing-classes>.
  
That is, Puppet is very likely applying the ordering you specify, but that 
doesn't have the *effect* you expect because Class['a'] and/or Class['b'] 
declares other classes that you consider as belonging to 'a' / 'b', but 
which are not properly contained by 'a' / 'b'.


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 puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/e7828d3c-70f2-4b02-a919-1846d0b8dc42%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to