Jump to: navigation, search

Difference between revisions of "PuppetConfigForNova"

 
Line 8: Line 8:
 
== Release Note ==
 
== Release Note ==
  
Administrators will be able to include a set of mandatory or optional Puppet manifests in a project.
+
Administrators will be able to include a set of mandatory or optional Puppet classes in a project.
  
Users will be able to include and configure a select set of optional Puppet manifests in an instance.
+
Users will be able to include and configure a select set of optional Puppet classes in an instance.
  
 
== Rationale ==
 
== Rationale ==
Line 28: Line 28:
 
Each image type within a given project can be configured with a Puppet server.  Information about contacting this server (hostname, keys, path, whatever) will be provided to instances on creation.
 
Each image type within a given project can be configured with a Puppet server.  Information about contacting this server (hostname, keys, path, whatever) will be provided to instances on creation.
  
Each image type within a given project can be configured with a list of required manifests.  This list of manifests will be injected into each instance on creation.
+
Each image type within a given project can be configured with a list of required classes.  This set of classes will be injected into each instance on creation.
  
Each image type within a given project can be configured with a list of optional manifests.
+
Each image type within a given project can be configured with a list of optional classes.
  
Users will be able to query an instance about optional and required manifests.  Users will be able to select or deselect optional manifests.
+
Users will be able to query an instance about optional and required classes.  Users will be able to select or deselect optional classes.
  
 
(fixme: also, variables)
 
(fixme: also, variables)
(fixme: should we support modules control instead of or in addition to manifest control?)
+
(fixme: should we support modules control instead of or in addition to class control?)
  
 
== Implementation ==
 
== Implementation ==
  
FIXME:  Wikimedia's Puppet setup uses LDAP to manage the set of packages installed on an instance.  That's probably not practical for openstack, so we may need to return to ordinary file-based control.  Of course, that'll make querying a specific instance pretty hard; we can mirror instance config in the database, but then we run the risk of getting out of sync.
+
FIXME:  Wikimedia's Puppet setup uses LDAP to manage the set of classes on an instance.  That's probably not practical for openstack, so we may need to return to ordinary file-based control.  Of course, that'll make querying a specific instance pretty hard; we can mirror instance config in the database, but then we run the risk of getting out of sync.
  
 
=== UI Changes ===
 
=== UI Changes ===

Revision as of 23:32, 17 January 2012

  • Launchpad Entry: FIXME
  • Created: 17 Jan 2012
  • Contributors: Andrew Bogott, Ryan Lane

Summary

Release Note

Administrators will be able to include a set of mandatory or optional Puppet classes in a project.

Users will be able to include and configure a select set of optional Puppet classes in an instance.

Rationale

Currently providing new system configurations on Nova requires the creation of a custom image. Adding Puppet support will allow for much finer-grain control of instance configuration.

User stories

Assumptions

All images discussed in this design are presumed to be Puppet-ready, with a puppet client preinstalled to run on startup.

The puppet server may or may not be hosted within openstack; it will be identified by an arbitrary hostname.

Design

Each image type within a given project can be configured with a Puppet server. Information about contacting this server (hostname, keys, path, whatever) will be provided to instances on creation.

Each image type within a given project can be configured with a list of required classes. This set of classes will be injected into each instance on creation.

Each image type within a given project can be configured with a list of optional classes.

Users will be able to query an instance about optional and required classes. Users will be able to select or deselect optional classes.

(fixme: also, variables) (fixme: should we support modules control instead of or in addition to class control?)

Implementation

FIXME: Wikimedia's Puppet setup uses LDAP to manage the set of classes on an instance. That's probably not practical for openstack, so we may need to return to ordinary file-based control. Of course, that'll make querying a specific instance pretty hard; we can mirror instance config in the database, but then we run the risk of getting out of sync.

UI Changes

The 'nova' and/or 'nova-manage' commandline tools will be extended to provide Puppet configuration options. Most likely this interface will include a --file option since the configurations will be long-winded.

Ideally, Horizon will also provide a configuration tool, although this will most likely be left for later.

Code Changes

Migration

Test/Demo Plan

Unresolved issues

BoF agenda and discussion