thoughts on kickstart

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  given that i've finished my reading of the kickstart docs, and
having previously messed with it to some extent, i'm going to wax
verbose, then i'll shut the heck up.  while kickstart is obviously
an essential tool for installation automation, i want to point out
what i think are some significant flaws.  i know i mentioned some
of this before, but i wanted to summarize everything in one place.

  i'm going to pass over the limitations of ksconfig, in
that it doesn't support the full flexibility of the kickstart file.
i appreciate that the config file is a moving target, so i'll just
leave that be.  and now, what i see are the weaknesses in kickstart
that have to be addressed.

1)  as i mentioned in a previous posting, there's the glaring
inconsistency in using "=" in some places and not in others, in the
following example in the very same directive:

	--nisdomain <domain name>
	--ldapserver=<ldap server name>

not to put too fine a point on it, make a decision: "=" or no "=".
it's going to be a pain to have to keep checking the docs to keep
things straight.

2)  --useLilo.  what on earth is an upper case letter doing there,
sticking out like a sore thumb?  once again, consistency.

3)  in most cases, a single word directive seems to mean that that
directive is in effect, such as "text" or "reboot".  so what's the
deal with "zerombr yes"?  according to the docs, there is no other
valid "zerombr" directive, so doesn't that make the word "yes"
just a tad redundant, and inconsistent with the pattern of the
rest of the directives?

(oh, and while i'm harping about zerombr, it's probably worth
mentioning that, regardless what it suggests, it does *not*
zero the mbr.  it clears any invalid partition tables, a far
cry from zeroing the mbr.)

4)  a lack of symmetry in directive options.  for example, the
"bootloader" directive has the --useLilo option, but no --useGrub
option.  any particular reason for this?

and i'm still baffled by the "bootloader" directive (which, according
to the docs, "specifies how the bootloader should be installed ..."),
having a "--location=" possible value of "none", which means "do not 
install the bootloader".  cripes.  talk about confusing.

but the problems now get worse ...

5) what does it mean to skip a directive completely?  the customization
guide says that "Omitting any required item will result in the 
installation program prompting the user for an answer to the related
item...".  but as i pointed out in a previous message, in an earlier
version of kickstart, when i omitted the "network" directive (listed
as optional), i was prompted for that info.  i finally got around
this by adding a bare "network" directive, and that solved the
problem.  this was a *totally* non-intuitive solution.

as i see it, a kickstart directive should allow for four choices:

  a) giving the information
  b) skipping that directive completely
  c) prompting the user for the info
  d) auto-detecting or auto-probing for that info, doing the best
	it can

all of the above are perfectly reasonable choices, and are represented
by things like "xconfig", "skipx", "mouse" and so on.  in fact, the
docs list the "mouse" directive as required, but if you don't include
that directive, the docs say that the installation program will
attempt to autodetect the mouse. well, then -- it isn't "required",
is it?

all of this could be solved if you added a couple of options for
any directive, such as "--probe" or "--auto", and "--skip" or
"--prompt".  or whatever.  it's horrifically inconsistent to not
know what's going to happen if you deliberately leave out a directive.
*all* directives should behave the same way.

6) along with the previous point, the biggest drawback with the k.s.
config file is its inconsistency with the grouping of directives and
their possible options.  consider:

  auth .........

note that what comes after "auth" is everything related to authentication.
perfectly reasonable.  what is *not* reasonable is to have the two totally
separate, mutually exclusive directives "install" and "upgrade".  these
are clearly options that belong to a single directive, and should be
specified that way, as in:

  installtype --install
  installtype --upgrade

to be consistent with other directives.  the same holds for the different
places to get the installation packages:

  nfs
  cdrom
  harddrive

and so on.  bad.  these again, like "auth", should be part of a single
directive, as in:

  packagelocation --nfs ...
  packagelocation --cdrom ...

or something like that.  (and what's with the "--" prefix on so many
of the options?  i notice you don't type "zerombr --yes".  but
i'm not going to harp on that too much.)

7)  oh, and one final, real nitpicky point.  the docs suggest *very*
strongly that you must write the directives in a specific order.
this wasn't true with earlier versions of kickstart -- you had some
flexibility.  has that changed?

i could go on, but i think you get my drift.  and why am i being so
nitpicky?  simple.  as red hat gets more complex, people are going to
continue to ask for more sophisticated options in their kickstart
files, perhaps similar to jumpstart files in solaris, in which you
can code conditionals to check for the underlying architecture, the
number of disks, the size of the disk(s) and so on.

what this suggests is that kickstart file directives are going to evolve
into a simple programming language.  (sound familiar?  check out the
RedHat/base/comps file, which defines what rpms get loaded at install
time.  that file has conditional constructs which check if other rpms
have been loaded, what the architecture is, etc.)

and that's why a lot of this raging inconsistency needs to be addressed
now.  as it stands now, the aesthetics of that file are a mess, and
will make future improvements that much harder.   now would be a
good time to clean it up.


rday





[Index of Archives]     [Red Hat General]     [CentOS Users]     [Fedora Users]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux