Wanted to contribute another case where this idea of trying to manage "actual" 
has conceptual consequences.  As you roll out Puppet on a unmanaged diverged 
infrastructure, you probably want to start identifying commonalities between 
systems and defining them as policy via puppet.  If at that point you want to 
define the inverse of that policy too, you'll break everything that doesn't 
have a well-defined class yet that describes it.  e.g. if you have a web server 
that's diverged so far from most other web servers that you can't put it in 
your web class yet, you'd want it to (temporarily) stay unmanaged by Puppet, 
not get uninstalled.  Sure, if one of your clean boxes with Apache changed 
roles it would be nice to have that *undone*, but you can do that by having it 
be outside the scope of what is defined and then remove it manually.  Or 
rebuild from scratch like Scott suggested! :-)

Hmm, lightbulb.

*Maybe* having a way to undo a class that had been once installed is 
conceptually feasible, rather than defining as policy what !class looks like 
which I believe is conceptually untenable.  What if a class that's installed 
and then is no longer defined in policy stays resident on the system as a 
tombstone, and certain class resources can be marked as tombstone-cleanup, and 
when a class switches to a tombstone, each of those tombstone-cleanup resources 
has to switch to ensured or executed success for the tombstone to go away 
completely (if a class had no tombstone-cleanup resources, than it would be 
directly removed).

Hmm, of course the mere idea of having class-was-here-now-its-not cleanup 
functions is inherently divergent instead of convergent---you're just doing 
run-once actions---and so maybe shouldn't exist in Puppet.  *What if* Puppet 
left a fact on the system of tombstoned classes (and/or resources)---that is 
resources/classes which had been once converged but were no longer)---then a 
sysadmin could use a non-convergent tool like mc to carry out actions that they 
determined they wanted done to clean up a tombstone from a system, and somehow 
as a result the fact also would be updated to represent that there was no more 
tombstone for that class/resource?  (I'm not going to submit this as a feature 
request because at the moment I don't really need it ... I'm just suggesting it 
to promote discussion on the idea.)  That way you can undo what Puppet does 
without dealing with "I'm defining what 'not webserver' looks like across 
*everything*".

Eric

-- 
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