On May 16, 8:51 pm, Joshua Hoblitt <[email protected]> wrote:
> The class structure I have is something like the following.
>
> users::common
> users::dev
> users::prod
> etc...
>
> users::{dev, prod} do not use inheritance.  Almost all node include
> users::common.  Some include users::common and user::dev, while others
> include users::common and users::prod.  No node presently includes all
> three classes but it's desirable for that to be possible.  The class
> users::common contains user and group types (actually virtual resources but
> that detail shouldn't matter...) and is machine generated.  users::{dev,
> prod} define additional users and groups.  The difficulty is that I have
> users in  ::common that need to be added a group a group in ::dev but not
> be a member of that group in prod.  This is complicated by the fact that
> this group is declared in ::common.   Am I left with having to do class
> inheritence here?


No.


> I'd like to avoid that if possible


Very reasonable, but


> as that would
> preclude ::dev and ::prod being included on the same node.


why do you say that?  That might become the case if you discovered
other, similar requirements, especially going the other direction, but
you could do what you describe with inheritance without
preventing ::dev and ::prod from both being included.  Example:

class users::common {
  user {
    'alice': uid => 501, gid => 501;
    'bob': uid => 502, gid => 502;
  }

  group { 'special-access': gid => 99 }
}

class users::dev inherits users::common {
  user { 'charlie': uid => 601 }
  Group['special-access'] {
    members => 'bob'
  }
}

class users::prod {
  user { 'dave': uid => 701 }
}

node dev1 {
  # nothing wrong with including both these:
  include 'users::common'
  include 'users::dev'
}

node prod1 {
  include 'users::common'
  include 'users::prod'
}

# shouldn't be a problem:
node hybrid {
  include 'users::common'
  include 'users::dev'
  include 'users::prod'
}

>  I understand
> that heira is good at dealing with this sort of situation.  Is there some
> magic way of looking up data in heira without dumping foreman as an enc?


No magic is required just for that.  Hiera and Foreman themselves are
pretty much orthogonal.  A bit of magic might be needed if you want to
use Foreman to set values that Hiera will provide, but that's what
hiera-foreman claims to do.


John

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

Reply via email to