Does your repos class have a bunch of classes included? If so, those are not caught by the require and you need to use the anchor pattern:
http://projects.puppetlabs.com/projects/puppet/wiki/Anchor_Pattern The ordering (no matter how you do it) only orders the *resources* in that class. Not the resources in classes that are *included* in your repos class. On Wednesday, June 19, 2013 6:00:03 PM UTC-6, Stack Kororā wrote: > > Greetings! > > tl;dr Why doesn't require=>Class work? > > I have a module I built that I creatively called "repos". This does a > number of things for me: > * I have many systems on different networks. Depending on the network > depends on which repository the servers get their packages from. > * I have many OS's (RHEL, Scientific, CentOS, SuSE) and several different > releases of those OS's (ex: RHEL6 vs RHEL5). > * Some systems get repositories that others don't (ex: VMware guests get > the ESXi guest tools repo). > * We roll our own packages for some software; only systems of a certain > type get these repos. > * ect. > > This class does a wonderful job for me. I barely have to do anything in > the node definition other than "class { 'repos': } " and it just figures > out which systems get what repo's based on facter and various parameters > (like current network IP). > > Here is the problem though. > package {["htop":ensure=>installed, } > > Chances are *really* good that on first runs when the repo hasn't yet been > created, what will happen is: > * Error: can't find htop. > * Installing EPEL > *Done! > > Well that isn't what I want, obviously. Thus I tried: > package {["htop":ensure=>installed,require=>Class['repos'],} > > Still the same result as before. It never fully configures the repo before > trying to install. Then I tried: > package {["htop":ensure=>installed,require=>Yumrepo['EPEL'],} > > It works!! Hooray! And then I hit a failure point. This next statement > works for Scientific Linux but fails for CentOS6 because a CentOS system > won't have the SL6 repo! > package {["tuned":ensure=>installed,require=>Yumrepo['SL6'],} > > I have come up with two "solutions". > 1) Change all the repos to use generic names like "Base" and "Security". > While it is a big bandaid, it doesn't really fix the problem as there is > still potential for packages to conflict. > > 2) Find out why "require=>Class['repos']" doesn't work and fix it. This > would solve all my problems if the repos were run and configured properly > before packages were installed. The only "problem" would then be to make > sure I am not trying to install a package that legitimately doesn't exist > in the repos (like tuned on a CentOS 5 box) but that would fall squarely > into a PEBKAC and there is only so much I can script to catch those. :-) > > Can anyone help me with this please? Any ideas on how I can fix this? > > Thanks! > > -- 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. For more options, visit https://groups.google.com/groups/opt_out.
