On Wed, Dec 31, 2008 at 04:32:38PM -0500, Michael DeHaan wrote:
Axel Thimm wrote:
> On Tue, Dec 30, 2008 at 06:34:32PM -0500, Michael DeHaan wrote:
>
>> Axel Thimm wrote:
>>
>>> anaconda has an %include directive, but that only works for local
>>> files. The usual trick is to %pre a wget and %include it later on. But
>>> that doesn't work if the parent kickstart file is the one defining the
>>> base parameters like which URL to install from etc.
>>>
>>> Also %including a prerendered kickstart file isn't really cobbler
>>> style, the variables could have changed and the included rendered file
>>> would reflect the old settings of the parent profile.
>>>
>>> As a workaround I'm doing the following on top of every kickstart file:
>>>
>>> #if $getVar("ksparent","") != ""
>>> #include $ksparent
>>> #end if
>>>
>>> But ksparent needs to be provided and I'm using the poor man's API
as
>>>
>>> ksparent=`cobbler profile dumpvars --name=Parent | grep "^
'kickstart':" | sed -e"s| 'kickstart':
'\(.*\)',$|\1|"`
>>> ...
>>> cobbler profile add [...] --inherit=Parent
--ksmeta="ksparent=$ksparent" [...]
>>>
>>> It would be nice if ksparent could be set automatically by cobbler and
>>> if a simple scriplet like
>>> $ cat /var/lib/cobbler/snippets/include_parent
>>> #if $getVar("ksparent","") != ""
>>> #include $ksparent
>>> #end if
>>>
>>> would be referenced on all sample kickstart files as
>>>
>>> $SNIPPET('include_parent')
>>>
>>> Thanks!
>>>
>> I'm not sure I understand this one -- could you explain a bit more about
>> the use case and what you mean by "parent"/"ksparent" in
this case?
>>
>
> The use case are subprofiles, that's where $parent comes from.
>
> If one defines a subprofile it is usually for a more specialized group
> of hosts that may need a slightly different kickstart
> file. Fortunately most kickstart options can be overriden by later
> options and some sections are even merged together, so that
>
> %include /some/kickstart/file/parent.ks
>
> at the very top of the kickstart file inherits the parent kickstart
> and extends it.
>
> This is heavily utilized in the Fedora spins, see for example
>
https://fedorahosted.org/spin-kickstarts/browser/fedora-livecd-desktop.ks#L5
>
https://fedorahosted.org/spin-kickstarts/browser/fedora-live-base.ks
>
> The use case in cobbler is more like
> # cobbler list
> distro f10-x86_64
> profile f10-x86_64
> profile desktop-f10-x86_64
> system prospero
> profile server-f10-x86_64
> profile webserver-f10-x86_64
> system shylock
>
> For example webserver-f10-x86_64.ks could look like
>
> $SNIPPET('include_parent')
>
> %packages
> @web-server
> %end
I'd read the "Advanced Snippets" instructions here:
https://fedorahosted.org/cobbler/wiki/KickstartSnippets
Basically you can make a snippet called "foo" and then have
$SNIPPET('foo') do something else depending on the profile.
This would allow for what you want and still let the two to share a
common kickstart file.
But then you wouldn't be able to share common practices with the other
prominent kickstart projects at Fedora/RHEL which do "partial specialzations"
using the include style.
Also a
$SNIPPET('package_selection')
wouldn't really document what this kickstart file is about while the
above example of a specialization of a server profile to a webserver
one is self-documenting.
--
Axel.Thimm at
ATrpms.net