skip to main content



  • What does LCFG stand for?
  • What is the history of LCFG(ng)?
  • What is DICE?
  • What About the European DataGRID?
  • How Does it Work?
  • What Operating Systems are Supported?
  • What does LCFG stand for?

    Local ConFiGuration system.

    What is the history of LCFG (ng)?

    LCFG was originally designed by Paul Anderson in the Department of Computer Science (now the School of Informatics) at Edinburgh University, around 1993. This version ran primarily under Solaris. Alastair Scobie ported the system to Linux, including the creation of a completely new installation system and the RPM-based software update code. Many other people have contributed code and valuable ideas.

    The current version includes a major reworking of the LCFG core, including a rewrite of many components, and some fundamental changes such as the use of HTTP for resource transport. This version has become known as LCFG(ng) ("next generation").

    What is DICE?

    DICE is the "Distributed Informatics Computing Environment" which includes all the computing infrastructure used in the School of Informatics at Edinburgh University. DICE uses LCFG as well as other local and imported software.

    Some LCFG components are specifically tailored to the DICE environment, and some components make use of other packages which have been created or modified for use in DICE.

    What about the European DataGRID?

    A subset of LCFG has been used to configure prototype testbed clusters for the European DataGRID. This project had specific needs, and the EDG version of LCFG is based on a small subset of a rather old version. EDG now has a new toolset (Quattor) which uses a similar architecture to LCFG, but many sites are still running EDG LCFG.

    How Does it Work?

    Configuration parameters ("resources") for all machines on a site are stored in a number of "LCFG source files" on a central server. The files describe "aspects" of the site configuration, such as "a web server", or a "Dell Optiplex". Individual machine descriptions can reference appropriate aspects, as well as include their own specific resources.

    A daemon on the server monitors these files for changes and compiles them into individual XML "profiles" which explicitly describe the complete configuration of each machine. The profiles are published on a web server and downloaded by the corresponding client machines whenever they change.

    A number of modular "component" scripts on the client are responsible for different subystems, such as "mail configuration" or "web server configuration". The components are notified when their resources change and are responsible for translating the resources into the appropriate configuration files, and reconfiguring any associated daemons.

    One component is responsible for synchronising the set of packages installed on the machine with the list of required packages specified in the profile.

    New machines can be installed automatically by creating the appropriate source files and booting from a network file system using a boot floppy, or PXE. The required package set is installed according to the profile, and the components configure the system in exactly the same way as a fully-installed machine.

    What Operating Systems are Supported?

    The original LCFG was developed under Solaris, but recent versions run on Fedora Core versions 3, 5, and 6 (i386 and x86_64) and also Scientific Linux version 5 (i386 and x86_64). Various people have ported some of the LCFG core to other Linux distributions, such as Debian, but these ports have not been incorporated.

    The LCFG core has been ported back to Solaris and we are using this in production, although the software has not been packaged for distribution, and is not so well supported.

    There has been an experimental port to Mac OS X, which does work and includes some Mac-specific components. However, this is not production quality and the lack of uniform packaging system under OS X means that automatic management of installed software is likely to be difficult.

    There is a demonstration Windows client which can retrieve resource values from a profile, but no real components have been written.