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

Bryan Kearney bkearney at redhat.com
Mon Sep 29 14:40:55 UTC 2008


Brenton Leanhardt wrote:
> +++ Bryan Kearney [29/09/08 09:06 -0400]:
>> Brenton Leanhardt wrote:
>>> +++ 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.
>>
>> Yeah.. I think this is a good way to go. Keeping the number of files 
>> to a minimum would be good. Do you have a syntax chart for the genome 
>> DSL?
> 
> I've attached a sample config file.  You can see the code here:
> http://git.fedorahosted.org/git/genome.git?p=genome.git;a=tree;f=tools/genome-dsl;h=63b152ed2fca87bf47ebcae873c6ffe56fa87d96;hb=HEAD 


What do you think of this. Following the rdoc convention

# :default_value Foo
# :prompt What should the value of Foo be?
$variable = value_from_user()

This would result in a custom function which is executed at runtime to 
pull in the value (not polluting facter) and would feel somewhat rubyish.

-- bk




More information about the Thincrust-devel mailing list