[Thincrust-devel] Re: RFC: Customizing an appliance install

Brenton Leanhardt bleanhar at redhat.com
Mon Sep 29 12:46:13 UTC 2008


+++ Bryan Kearney [26/09/08 15:06 -0400]:
> I am looking for feedback on how to customize an appliance install. As you 
> may be aware, the appliance configuration engine uses puppet as it's 
> configuration syntax. The rational is that this is an up and coming 
> standard syntax, and should be familiar to those who do sysadmin type work 
> (Said another way, we don't need yet another DSL).
>
> The trick is how to allow a user (either via the gui or the command line) 
> to customize an appliance recipe. In puppet I have seen 2 ways to push in 
> custom information:
>
> 1) External Nodes
> 2) Facter
>
> I am thinking of using the latter, and would like to outline my thoughts. 
> Please feel free to offer up alternative solutions.
>
> Goal:
>
> Create recipes which can externalize a small set of data which the user 
> needs to provide in order to the appliance to be configured.
>
> Implementation
>
> A module, or a recipe can deliver one or more "external facts". They will 
> be delivered in the form:
>
> name:default_value:query_text

This seems good to me.  In fact similar to how Genome's "machine type"
DSL generates parameters for external nodes.  One thing I've thought
about, that I think could be a better approach, is storing this sort
of information in a special syntax (probably embedded in comments
JavaDoc style) so that this information would ship with the module as
opposed to keeping it in a separate file.


When tooling like Thin Crust needs access to this sort of information
there could be a Puppet tool that provides a way to collect it (ie, a
way that understands how Puppet loads and finds modules).  Genome has
had a hard time keeping a config file that represents
"name:default_value:query_text" type information in sync with a large
group of Puppet modules.  Especially when 15+ people have their hands
in the modules.
>
> before the puppet engine is run, the thincrust tool can iterate over these 
> facts, present them to the user, and record the answer. This can be stored 
> in a file on the appliance. In essence, this is a pre-processor.
>
> When puppet is run, a single custom fact will iterate over all the external 
> facts.. and add them to facter. This will allow them to be accessed by all 
> the recipes, modules, and templates.
>
> Thoughts?
>
> -- bk
>
>




More information about the Thincrust-devel mailing list