Issue #3760 has been updated by Nigel Kersten.

Status changed from Needs Decision to Needs More Information

There are a couple of things here that concern me, primarily around nodes now 
being able to request classes that they're not able to.

I'd love to see feedback on clear ways we could resolve that... as that feels 
like the major blocker to implementing this.

Note that potential workarounds here are:

  * Define environments that contain these one-off classes and use the 
`environment` argument.
  * Define nodes that contains only these one-off classes, and use the 
`node_name_value` argument.


----------------------------------------
Feature #3760: Support one-off or single run manifests
https://projects.puppetlabs.com/issues/3760

Author: R.I. Pienaar
Status: Needs More Information
Priority: Normal
Assignee: Nigel Kersten
Category: 
Target version: 
Affected Puppet version: 0.25.4
Keywords: 
Branch: 


Lots of actions that you'd want to perform are potentially destructive:

 * start your OS installer after creating a virtual machine
 * create a bunch of empty tables, dropping whatever is there now in a DB
 * create/re-create LVM partitions 

and so forth.  The usual approach is to use an exec that then create some file 
and use the creates => option, this is risky as those little locks may end up 
in lost+found resulting in huge data loss.

IF would be handy if I can have classes that associate with other classes, 
example:

<pre>
class xen::vm::mybox {
    # create the VM config files here
}

class xen::vm::mybox::build {
    include xen
    require xen::vm::mybox

    # initiate the building process here which might also do rebuilds, it would 
require
    # some resources from xen::vm::mybox in it's execs
}

node dom0 {
  $location = "dc1"

  include xen, xen::vm::mybox
}

</pre>

I'd want to be able to run the node that only has the xen VM definition in it 
but at some other point when I am ready I want a way to run the node but only 
the _xen::vm::mybox::build_ class.  This special one-off run should have access 
to facts, variables provided by my node block - the _$location_ var in this 
case.

In other words it should run through the whole compile process as normal, but 
instead of the classes that's in the node block it should run my provided class.

When I am ready to build/rebuild my VM I can just do:

<pre>
puppetd --test --runonce xen::vm::mybox::build
</pre>

I'd do this as often as I need to rebuild my VM.

This is one use case, we'd need some way to do this in a generic way. Today we 
have the --class option that's close but it has the caveat that the class has 
to be included on the node which we'd not want as these are special one-off or 
infrequent use classes.  The main reason for this is to keep all the logic 
related to VMs in one place, in one language and in one documentation tree 
using puppetdoc.

I am writing this in response to discussions in #2658.



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" 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-bugs?hl=en.

Reply via email to