Thanks for raising the question! One of the primary points I explored at 
this year's PuppetConf was to see what others were doing in this area and 
figure out what is possible with the puppet in its current state. Your 
mileage may vary on this... and keep in mind we are in the exploration 
stages of how to do this and that I work in a university environment...

We setup separate environments for groups based on administrative domain 
boundaries (i.e. common sets of admins). Access to the environments is done 
at the code repository level and then the repositories are pulled into the 
puppet masters. This prevents modules/manifests from spilling over and 
affecting servers that a particular set of admins don't (and shouldn't) 
manage. We are currently moving to three layers modules for puppet masters 
to parse: a common set of modules, an "org" set of modules, and then the 
environment set of modules. The common set of modules primarily comes from 
the puppet forge. The second layer of "org" modules are placed where we 
have overlaps of admins and/or services across multiple environments but 
where those methods/modules are not (or should not) be available for all 
environments site wide... (think University - College - Department... 
disparate system monitoring tool preferences for groups... etc.). The last 
layer of modules would be the modules found in the environment itself.

Currently, I am working on how to provide access to PuppetDB and a 
reporting dashboard that respects the administrative boundaries. PuppetDB 
does not support environments (yet... there is an open feature request for 
that) so separate PuppetDBs need to be setup along some administrative 
boundary partition scheme... it looks like the ORG layer will suffice for 
that and those ENVs that aren't in an ORG would get a separate PuppetDB if 
needed. One of the major problems that I see with this are how you do a 
site wide look at the PuppetDB information for those operations that need 
it as well as mimicking federated queries using multiple PuppetDB backends. 
But, if it works, then the ORGs or groups can have their separate instances 
of puppet-dashboard or whatever web front end they want to use, and we 
won't have to worry about some complex convoluted way of putting access 
control in there... standard web access methods will work. PuppetDB will be 
key though in order to be able to automate this beast as much as possible 
as things progress.


Other things on the to explore/figure out list for me are:
 - ENC? do groups of admins actually want this? provide via 
puppet-dashboard? theforeman? someotherwhizbangmethod?
 - dynamic branching git repositories being served side by side with more 
traditional static environment repositories
 - hiera availability for use in environments
 - automated horizontal scaling of puppet masters to handle additional 
loads as more systems are added in (hiera again likely key)
 - figure out how mcollective and subcollectives can fit into the mix... if 
at all...
 - using CI (Jenkins likely) to provide a more robust capability of 
checking manifests/modules before they get pushed out to puppet masters
 - ??
 - profit!

There is a lot more in the ??... but this seems like a long enough response 
for now. :)   It seems that setting up Puppet-as-a-Service is doable so 
that all the various administrative groups (and the auditors) will be 
happy. 

-Jeffrey





On Wednesday, September 11, 2013 7:27:25 AM UTC-5, Josh wrote:
>
> We have several internal customers that we would like to start offering 
> "Puppet as a Service" to.  Our central group would manage Puppet masters, 
> ENC, etc.  But, we want other independent groups to be able to use our 
> Puppet services.
>
> Is anyone currently doing this?  If so, how are you handling segregation 
> of manifests?  Are you creating multiple environments for each internal 
> customers (perhaps with one common environment shared amongst all for base 
> configuration).
>
> Any suggestions would be greatly appreciated.
>
> Thanks,
>
> Josh
>

-- 
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 post to this group, send email to puppet-users@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to