On 2/10/10 6:18 PM, Paul Querna wrote:
I believe doing this kind of API would best embody what has made
libcloud successful, instead of reinventing everything, try to
normalize what is already out there.  What do you think?

I concur, a provider interface abstraction over configuration management is desirable. Ideally, I think the interface would look something like:

def provision_node(node, role):
  ### upcast the bare metal to a defined state
  ### configuration mgt is transparently setup on the node
  ### recipes appropriate to the role are applied

This may be asking libcloud to do too much; not sure if its safe to assume that providers have a role concept. The abstraction boundaries would need to be driven by the lowest common denominators of their models. Under the hood, perhaps the simplest thing possible looks like this:

def provision_cfg_mgt(node, provisioning_script, destination):
  ### assume ssh keys are configured correctly
  # scp provisioning_script node:/path/destination
# ssh node 'chmod 755 /path/destination; /path/destination > /path/provision.log'

Doink. Where provisioning_script is a stub that drives the full setup of chef or puppet to put the node into the proper state (or if that's too high tech, some homebrewed mess of a shell script, choose your pain wisely though).

-Ian


--
Ian Kallen
blog: http://www.arachna.com/roller/spidaman
tweetz: http://twitter.com/spidaman
vox: 925.385.8426


Reply via email to