PuppetConfigForNova
- 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 manifests in a project.
Users will be able to include and configure a select set of optional Puppet manifests 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 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 optional manifests.
Users will be able to query an instance about optional and required manifests. Users will be able to select or deselect optional manifests.
(fixme: also, variables) (fixme: should we support modules control instead of or in addition to manifest control?)
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.
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.