|NPACI Rocks Cluster Distribution: Users Guide:|
|Prev||Chapter 5. Customizing your Rocks Installation||Next|
This procedure describes how to add a new appliance type to your cluster. This is useful when you want a subset of compute nodes to have specific behavior that is different from the rest of the compute nodes. For example, if you want all the nodes in cabinet 1 to be configured differently from the rest of the compute nodes.
Before you begin, you'll want to be comfortable with the Rocks XML framework that is used to produce a configuration graph. Details on this framework are found in the Reference Guide.
First, you'll need to create a new node XML file. This file will contain the configuration scripts and/or packages that will be applied to each of your appliances. Let's call it my-compute.xml. This file should be created in the directory /home/install/site-profiles/4.0.0/nodes. Below is the contents of the file:
<?xml version="1.0" standalone="no"?> <!DOCTYPE kickstart SYSTEM "@KICKSTART_DTD@"> <kickstart> <description> My specialized compute node </description> <changelog> </changelog> <post> <file name="/etc/motd" mode="append"> My Compute Appliance </file> </post> </kickstart>
Now, we'll link the above file into the existing XML configuration graph. We'll simply point the above XML node to the existing compute.xml node. In object-oriented terms, we are inheriting all the functionality of the compute appliance and then extending it.
To link my-compute.xml to compute.xml, in the directory /home/install/site-profiles/4.0.0/graphs/default, create the file my-appliance.xml and have it contain:
<?xml version="1.0" standalone="no"?> <!DOCTYPE kickstart SYSTEM "@GRAPH_DTD@"> <graph> <description> </description> <changelog> </changelog> <edge from="my-compute"> <to>compute</to> </edge> <order gen="kgen" head="TAIL"> <tail>my-compute</tail> </order> </graph>
To apply the changes above to the current distribution, execute:
# cd /home/install # rocks-dist dist
Now we need to add an entry into the Rocks MySQL database. This is accomplished with add-new-appliance:
# add-new-appliance --appliance-name "My Compute" --xml-config-file-name my-compute
Now let's retarget an existing compute node. We'll use insert-ethers to accomplish this task. First, ask insert-ethers to replace compute-0-0:
# insert-ethers --replace compute-0-0
This displays the screen:
Select My Compute then hit Ok. This removes compute-0-0 from the database and the next node that asks to be configured (that is, the next node that sends out a DHCP request) will be assigned the name my-compute-0-0. To see this in action, now instruct compute-0-0 to reinstall itself:
# ssh-add # shoot-node compute-0-0
Eventually, you'll see insert-ethers report that it discovered my-compute-0-0. After the node installs, it will be configured as a my-appliance. You can login to the node by executing:
# ssh my-compute-0-0
Your custom appliance can be applied to any new node in your system by starting insert-ethers as instructed above, then by booting a new node in configuration mode (by forcing it to PXE boot or by booting the node with the Rocks Base CD).