Automation

Revision 5 as of 2008-08-06 16:38:07

Clear message

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

Partially or fully automated installations using Ubiquity.

Rationale

There are a number of limitations in the existing preseeding facilities in Ubiquity (which are used by gfxboot-theme-ubuntu/casper to set a default locale and keymap). The most noticeable for automatic installations is that it does not skip a page if no questions on that page are asked by the backend; this is also a UI bug visible when going back from the automatic partitioner on a system with only one disk. There is also no way at present to distinguish questions that have already been asked in the current Ubiquity run (or a previous cancelled run) from questions that have been preseeded. These restrictions impede the use of Ubiquity for automatic installations.

Use cases

  • Some derivatives of Ubuntu know the answers to certain questions asked by the installer (e.g. the language), and want to set their values and prevent them from being asked.
  • Ubiquity provides a quicker installation than d-i by means of copying the live filesystem rather than installing packages, so, even though it does not provide a network installation at present, some people would like to use it for quickly bringing up individual machines in an automated and consistent fashion.
  • Internal certification testing will be more efficient if it can be automated, including the ability to boot over the network. (Coordinate with Marc Tardif in the Canonical support department.)

Design

We will modify Ubiquity's debconffilter and frontend frameworks to skip a page if no questions at all are asked by the backend that require user interaction on that page.

We will teach casper's preseeding implementation to be able to fetch preseed files from the network.

Under normal circumstances, Ubiquity ignores the seen flag set by preseeding; this is necessary to make it possible to cancel Ubiquity and re-run it from the start. However, since this is problematic for automatic installations, we will add a --automatic option which skips pages if no questions are asked by the backend that require user interaction on that page and that do not have the seen flag set.

The implementor needs to go through and test that each individual question can be preseeded, and fix any further bugs that arise; they should be minor.

We will create documentation on automatic installations of ubiquity, to reduce the dependence on advice from installer developers. We will also create installer developer documentation on how this is supposed to work in order that this scheme will be remembered.

To support netbooted installations, we will ensure that the existing casper support for netbooting works properly (it is believed to have some bugs), and we will add a noninteractive frontend to Ubiquity which can be invoked automatically. At the time of writing, new frontends can be added to Ubiquity reasonably straightforwardly by inheriting from ubiquity.frontend.base.BaseFrontend.

Future work

We will investigate switching the GTK frontend from the home-grown notebook scheme to gtk.Assistant (new in PyGTK 2.10) to simplify page switching.


CategorySpec