Rocks generates Kickstart files for compute nodes dynamically using a structure called the Kickstart Graph. This graph is made from edges and nodes, both described in an XML language. This section serves as a reference for the XML tags and attributes. It is not an XML DTD. The XML language is specified by the KPP, KGEN, and KCGI applications.
The kickstart graph is specified by G=(V,E) where G is the graph, V is the set of nodes, and E is the set of edges that connect nodes. A traversal of the kickstart nodes and edges makes a full kickstart file used to specify the software and configuration for a node. Edges are described in "graph" files, while each node is specified in a "node" file.
When the order of nodes' contribution to the kickstart file matters, we use special edges made with <order> tags. We describe these tags in this section as well.
The <tagname> is given first, with a description. A list of attributes supported by the tag follows. All tags accept the arch attribute, which may be a list: "x86_64", or "i386, ia64". The tag is ignored if the client's architecture does not match this list.
<kickstart>
Wraps an XML node file.
Optional. Specifies the roll this node belongs too. Default "base".
<description>
Text description of what this node does.
<changelog>
Text description of the changes made to this node file. Generally a "Log" CVS directive.
<package>
Specifies a single RPM package. Includes only the RPM name, not its version or release number.
Optional. Specifies the roll this package belongs too. Default "rocks".
Optional. Value is "meta". Used to describe RedHat meta packages. Examples are "Base", "Emacs", "GNOME".
Optional. If this attribute exists, the RPM will not be installed, even if it is specified by a RedHat meta package.
<include>
KPP replaces this tag with the contents of the file specified. Done primarily to enable syntax-friendly editing of script and language files.
Required. The file to include.
Optional. Value is (quote|xml). If "quote", XML characters in the file are escaped appropriately. Default is "quote".
<var>
In "read" form, KPP substitutes this tag with its value. In "write" form, KPP creates a variable for later reading. The value is generally found in the app_globals table of the Cluster database for compute nodes, and in the site.xml XML file (not ordinarily visible) for frontend installs. KCGI adds several additional variables, specified by the "Node" service name.
Required. The name of this variable. Format is generally Service_Component, where Service and Component names are used to match values in the app_global table of the database. Examples are Kickstart_PublicDNSDomain, and Info_ClusterName.
Optional. Sets the value of this variable. A "write" form.
Optional. Allows you to set the value of this variable to the value of the variable specified here. A "write" form.
<eval>
Replaced with the output of the script specified between these tags. The script is run on the host generating the kickstart file (generally the frontend).
Optional. Specifies the script interpreter to use. If shell is "python", the Applets directory is added to the Python include path. This allows easy inclusion of python modules. Default "sh".
All var variables are made available to the script in the form of environment variables.
Optional. Value is (quote|xml). If value is "quote", KPP escapes any XML characters in the shell output. Default is "quote".
<post>
Wraps the post section of this node. Configuration is generally carried out in the post section, making this a popular tag. The commands specfied here correspond to an RPM post section, and they are executed on the client machine (not on the frontend, in contrast to the <eval> tag).
Optional. Passed straight to anaconda. Common values are --interpreter /usr/bin/python and --nochroot.
<pre>
Wraps the pre section commands. Run before package installation, in contrast to commands from the post section.
Optional. Same semantics as the post section attribute.
<file>
Wraps the contents of a file.
Required. Specifies the name of this file, a full path.
Optional. Value is (create|append). If "create", file is created. If "append", the contents are appended to the end of an existing file. If target file does not exist, it will be created. A record of the change is kept in a RCS repository in the same directory as the file. Default is "create".
Optional. The user.group that owns this file. Can be specified either as names "root.root" or numbers (guids) "0.0".
Optional. The permissions of this file. The value of this argument is passed to the "chmod" command, and accepts the same format. Examples are "0755" or "a+rx".
Optional. Value is "literal" or "expanded". If "literal" no variable or backtick expansion is done on the contents of the file. If value is "expanded", standard shell variable expansion is performed, as well as running commands quoted with backticks. Default is "literal".
Optional. Specifies a command whose output is placed in the file. Should only be used as a singleton tag:
<file name="/etc/rocks.zone" expr="/opt/rocks/dbreport dns config"/> |
These tags specify commands in the "main" section of a kickstart file. Each of these tags are wrapped in <main> tags. They appear in node XML. Only the tags normally used in a cluster appliance kickstart file are presented here; for a full reference see Red Hat Linux 7.3: The Official Red Hat Linux Customization Guide.
<main>
<auth>
Commands for the authentication of the system. Default "--useshadow --enablemd5 --enablenis --nisdomain rocks".
<zerombr>
If "yes" any invalid partition tables found on disks are initialized. Default "yes".
<bootloader>
Specifies the bootloader arguments. Default "--location=mbr"
<interactive>
Optional. Allows for inspection and modification of the kickstart values given, via the snack screen interface. Default: present.
<url>
Specifies the installation method with the --url argument. Default for compute nodes "--url http://$KickstartHost/$KickstartBasedir/$Node_Distribution" where variables are specified with the <var> construct.
Default for frontend nodes: "--url http://127.0.0.1/mnt/cdrom"
<network>
Arguments for network configuration.
<lang>
The installation language to use. Default "en_US".
<langsupport>
The languages to install on the system. Example <langsupport> --default en_US fr_FR</langsupport>.
Default "--default en_US".
<part>
Define a partition on the drive. See usage and warnings in Rocks Compute Node Partitioning.
<clearpart>
Clear all disk partitions on all drives.
<keyboard>
Sets the system keyboard type. Default "us".
<mouse>
Specifies the system mouse type. Default "none".
<timezone>
Required. Sets the system timezone. Default "--utc GMT".
<text>
If present, perform the kickstart installation in text mode. Default: present.
<install>
If present, perform a fresh install (not an upgrade). Default: present.
<reboot>
If present, automatically reboot after installation. Default: present.
Edges in the kickstart graph are specified with the XML tags below. Order tags give control of the graph traversal (the order nodes appear in the final kickstart file).
Both the edge and order tags appear in kickstart graph files.
<graph>
Wraps an XML graph file.
Optional. Specifies the roll this node belongs too. Default "base".
<description>
Text description of what this part of the graph does.
<changelog>
Text description of the changes made to this node file. Generally a "Log" CVS directive.
<edge>
Specifies an edge in the kickstart graph, links graph nodes together. Can be specified as a singleton tag:
<edge from="client" to="java"/>, or a standard tag that wraps <to> or <from> tags.
Optional. Specifies which architectures should follow this edge. Same format as arch attribute in node files. The edge is ignored if the client's architecture does not match this list.
Optional. Value is "kgen". Specifies which kickstart generator should follow this edge. Default "kgen".
Optional. Specifies the end of this edge, a node name.
Optional. Specifies the beginning of this edge, a node name.
<to>
Wraps a node name. Specifies the end of a directed edge in the graph. Used inside an edge tag with the "from" attribute:
<edge from="slave-node"> <to>xinetd</to> <to>rsh</to> </edge> |
Optional. Specifies which architectures should follow this edge. The entire edge is ignored if the client's architecture does not match this list.
<from>
Wraps a node name. Specifies the beginning of a directed edge. Used like "to" tag.
Optional. Specifies which architectures should follow this edge. The entire edge is ignored if the client's architecture does not match this list.
<order>
Specifies a ordering between nodes in the graph. While the <edge> tags specify a "membership" in the kickstart file, the <order> tags give an "ordering" between nodes.
The ordering is affected by a topological sort of nodes using order edges. While the kickstart graph allows cycles, the set of order tags must specify a directed-acyclic graph (DAG). Any nodes not touched by an order edge have a random order in the resultant kickstart file.
Can be used to wrap <head> and <tail> tags in the same fashion as the <to> and <from> tags for "edge".
Optional. Specifies which architectures should follow this edge. Same format as arch attribute in node files. The edge is ignored if the client's architecture does not match this list.
Optional. Value is "kgen". Specifies which kickstart generator should follow this edge. Default "kgen".
Optional. Specifies the beginning of this edge, a node name. Special node name "HEAD" is allowed, which specifies the node is placed first. Ordering among nodes with HEAD ordering is undefined.
Optional. Specifies the end of this edge, a node name. Special name "TAIL" is allowed, which specifies the node be placed last. Ordering among nodes with TAIL ordering is undefined.