Interesting.  That's worked for me in the past.  Well outside of  
creating a package resource default, you'll need to just put requires  
in the classes that require other classes to be run first.  Really,  
that's not a bad idea at all since relationships should be explicit   
if not just for readability.  Remember that puppet should be your  
executable documentation.

You might be able to do something like:

if defined(Class["yum"]) {
        require yum
}

But I've never tried that.  If it works, then it will only define a  
relationship if the class is actually being used.  Just keep that this  
will not work in 0.25 since require is broken.  It will work in 0.25.1  
though.


On Oct 23, 2009, at 4:18 PM, Douglas Garstang wrote:

>
> Actually, that doesn't seem to be what's happening Carl.
>
> I have this...
>
> node tst_basenode {
>
>    # Do not include any modules here, other than yum, that require  
> software
>    # or they will fail! If you include other modules in this node  
> definition,
>    # there is no guarantee that yum will be completed before them.
>    include yum
>
> }
>
> node tst_basenode_centos inherits tst_basenode {
>    include yum-priority
>    include ntp
>    include ldap_client
>    include syslog_ng
> }
>
> node test_node inherits tst_basenode_centos {
>    include mysql_client
>    include mysql_server
> }
>
> ... and I am DEFINITELY seeing puppet try and install objects from
> ldap, mysql and yum-priority BEFORE the yum module is complete.
>
> Douglas.
>
>
> On Fri, Oct 23, 2009 at 1:22 PM, Douglas Garstang
> <doug.garst...@gmail.com> wrote:
>> Awesome info. Thanks Carl!
>>
>> On Fri, Oct 23, 2009 at 1:18 PM, Carl Caum <carl.c...@gmail.com>  
>> wrote:
>>>
>>> There's two ways you can go about this.
>>>
>>> 1)  One dirty little secret of puppet is that inheritance is always
>>> done in order.  So if you move the includes for yum and yum-priority
>>> to the node basenode_centos_5, they will processed first.  I'm not
>>> sure if this is still true in 0.25 though.
>>>
>>> 2) Set up a package default in the base node.
>>>
>>> Package{
>>>        require => [ Class["yum"], Class["yum-priority"] ];
>>> }
>>>
>>> I'm sure there's other ways to go about this, so other feel free to
>>> pitch in :)
>>>
>>> On Oct 23, 2009, at 3:12 PM, Douglas Garstang wrote:
>>>
>>>>
>>>> I have this...
>>>>
>>>> node test_node inherits basenode_centos_5 {
>>>>    include yum
>>>>    include yum-priority
>>>>    include mysql_client
>>>>    include mysql_server
>>>> }
>>>>
>>>> Puppet seems to be executing stuff from the mysql_client and
>>>> mysql_server modules before the yum module. I had assumed that  
>>>> modules
>>>> were executed in the order that they where included, but this seems
>>>> not to be the case. I guess you could use requires() all over the
>>>> place in the mysql modules to make sure that yum had completed  
>>>> doing
>>>> it's thing first, but that seems horribly complicated to me. Is  
>>>> there
>>>> a better way? Since having your yum repositories is critical to
>>>> software being installed, it should always be done first.
>>>>
>>>> Please don't tell me I have to do it with requires.... :( That  
>>>> would
>>>> mean EVERY package() statement would need a requires => class 
>>>> ['yum'],
>>>> right?
>>>>
>>>> Doug.
>>>>
>>>>>
>>>
>>>
>>>>>
>>>
>>
>>
>>
>> --
>> Regards,
>>
>> Douglas Garstang
>> http://www.linkedin.com/in/garstang
>> Email: doug.garst...@gmail.com
>> Cell: +1-805-340-5627
>>
>
>
>
> -- 
> Regards,
>
> Douglas Garstang
> http://www.linkedin.com/in/garstang
> Email: doug.garst...@gmail.com
> Cell: +1-805-340-5627
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to