[Puppet-dev] prm: puppet recipe manager prototype
Adrian Likins
alikins at redhat.com
Thu Mar 30 19:04:39 CST 2006
David Lutterkort and I have been working on an idea for making it a little
easier to manage puppet manifests and configs. We have a prototype to
look at if anyone is interested.
http://people.redhat.com/~alikins/prm/
It's pretty simple at the moment.
I'll quote from the README for a bit more detail:
=======
This is a small utility to facilitate the distribution of 'recipes',
configurations under the control of puppet. A recipe, a precanned
configuration for a specific aspect of a system's functioning, consists of
one or more puppet manifests and configuration files needed by the
manifest. Using prm to manage recipes makes it both easier for system
administrators to incorporate configurations from others, manage changes to
their site's configuration, and share their configuration beyond their
site.
The Puppet Recipe Manager, prm, takes care of the details of downloading
and updating recipes, deploying them at a site, and ensuring that puppet
manifests and config files wind up in the proper places in the file system
of the puppet server and its file server.
A recipe can be initially obtained from an 'upstream' repository, and then
modifed locally to better fit the needs of the site that deploys it. Since
it is likely that upstream updates to recipes need to be incorporated
into a site's configuration, even after that site has made changes to the
initial recipe, recipes should be kept under the control of a distributed
source control system; this prototype uses mercurial
(http://www.selenic.com/mercurial/) for this purpose.
The lifecycle of a recipe can be illustrated as follows:
* Upstream maintainer publishes version 1.0 as a mercurial
repository at some URL
* Site admin downloads and deploys recipe with 'prm get'
* Site admin makes local changes to recipe, and checks them
into her local copy of the mercurial repo
* Upstream maintainer makes changes to recipe and publishes
version 2.0
* Site admin updates recipe from upstream by running 'prm update';
this may require resolving conflicts between the upstream version
and the changed local version. For now, this would have to be done
========
So, check it out. See if it looks interesting. We welcome any comments
on the concept or approach, suggestions, etc.
Adrian Likins
alikins at redhat.com
More information about the Puppet-dev
mailing list