Using_Clone_to_Deploy_Server

There is a newer version of this page. You can find it here.

When we want to deploy large numbers of nodes which have the same configuration, the simplest way is to clone. This means the user can customize and tweak one node’s configuration according to his needs. They can verify it’s proper operation, then make this node as template. They can capture an osimage from this template node, and deploy the rest of the nodes with this osimage quickly. xCat (2.8.2 and above) provides this feature which we call Sysclone to help you handle this scenario.

List of supported Arch and OS

xCAT version OS Tested Version ARCH Feature
2.8.2 and later Centos 6.3 5.9 x86_64 Basic clone node
redhat 6.4 5.9 x86_64 Basic clone node
2.8.3 and later sles 11.3 10.4 x86_64 Basic clone node
2.8.5 and later Centos 6.3 x86_64 Add feature: update delta changes(has limitation)
redhat 6.4 x86_64 Add feature: update delta changes(has limitation)
sles 11.3 x86_64 Add feature: update delta changes
sles 10.x x86_64 Not support any more

Using Sysclone to install Nodes

This section describes how to install or configure a diskful node (we call it a golden-client), capture an osimage from the golden-client. That osimage from the golden-client can be used to install other nodes (called the target nodes).

Prepare the xCAT Mgmt Node for Using Sysclone

How to configure xCAT Mgmt Node please refer to Install_xCAT_on_the_Management_Node.

For support Sysclone, we need to install the systemimager rpms on the golden-client.

  • Download the xcat-dep tarball which includes systemimager rpms. (You might already have the xcat-dep tarball on the mgmt node.)

    Go to xcat-dep and get the latest xCAT dependency tarball. Copy the file to the management node and untar it in the appropriate sub-directory of /install/post/otherpkgs. For example:

    (For RH/CentOS):    
    mkdir -p /install/post/otherpkgs/rhels6.3/x86_64/xcat
    cd /install/post/otherpkgs/rhels6.3/x86_64/xcat
    tar jxvf xcat-dep-*.tar.bz2
    (For SLES):  
    mkdir -p /install/post/otherpkgs/sles11.3/x86_64/xcat
    cd /install/post/otherpkgs/sles11.3/x86_64/xcat
    tar jxvf xcat-dep-*.tar.bz2

Install or Configure the Golden Client

The Golden Client is a regular node for xCAT. When you deploy golden client with xCAT, you just need add a few additional definitions to it's osimage, which will used to install in golden client.

For information on how to install a regular node, read this documentation :
Installing_Stateful_Linux_Nodes#Option_1:_Installing_Stateful_Nodes_Using_ISOs_or_DVDs.

For the osimage to support clone, add the sysclone otherpkglist file and otherpkgdir to osimage definition.
Then use updatenode to install the rpms. For example:

    (For RH/Fedora/CentOS): 
    chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install \
         /rh/sysclone.rhels6.x86_64.otherpkgs.pkglist
    chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/rhels6.3/x86_64
    updatenode <golden-cilent> -S
    (For SLES):  
    chdef -t osimage -o <osimage-name> otherpkglist=/opt/xcat/share/xcat/install  \
     /sles/sysclone.sles11.x86_64.otherpkgs.pkglist
    chdef -t osimage -o <osimage-name> -p otherpkgdir=/install/post/otherpkgs/sles11.3/x86_64
    updatenode <golden-cilent> -S

Capture image of the Golden Client

On the Management node, use xCAT command imgcapture to capture an osimage from the golden-client.

    imgcapture <golden-client> -t sysclone -o <mycomputeimage>

When imgcapture is run, it pulls the osimage from the golden-client, and creates the image files system and a corresponding osimage definition on the xcat management node. You can use this command to check the osimage attributes.

 lsdef -t osimage <mycomputeimage> 

Install the target nodes with the image from the golden-client

The nodeset command configures the node for installation. rsetboot tells the node hardware to boot from the network for the next boot. Powering on the node using rpower starts the installation process:

    nodeset <target-node> osimage=<mycomputeimage>
    rsetboot <target-node> net
    rpower <target-node> boot

Update Nodes Later On

If, at a later time, you need to make changes to the golden client (install new rpms, change config files, etc.), you can capture the changes and push them to the already cloned nodes without need to restart cloned nodes. This process will only transfer the deltas, so it will be much faster than the original cloning.

\[Limitation\]: In xcat2.8.5, this feature has limitation in redhat and centos. when your delta changes related bootloader, it would encounter error. This issue will be fixed in xcat higher version. So up to now, in redhat and centos, this feature just update files not related bootloader.

Update delta changes please follow below steps:

1.Make changes to your golden node (install new rpms, change config files, etc.).

2.From the mgmt node, capture the image using the same command as before. Assuming <myimagename> is an existing image, this will only sync the changes to the image on the Management node.</myimagename>

    imgcapture <golden-client> -t sysclone -o <myimagename>
  1. To synchronize the changes to your target nodes do the following:
    3.1 If you are running xCAT 2.8.5 or later:

    For the nodes you want to update with this updated golden image:

    updatenode <target-node-range> -S

3.2 If you are running xCAT 2.8.4 or older:

For one of the nodes you want to update, test the update to see which files will be updated:

    xdsh <target-node> -s 'si_updateclient --server <mgmtnode-ip> --dry-run --yes'

If it lists files and directories that you do not think should be updated, you need to add them to the exclude list in 3 places:
On the golden node: /etc/systemimager/updateclient.local.exclude
On the mgmt node: /install/sysclone/images/<myimagename>/etc/systemimager/updateclient.local.exclude
On all of the nodes to be updated: /etc/systemimager/updateclient.local.exclude</myimagename>

From the mgmt node, push the updates out to the other nodes:

    xdsh <target-node-range> -s 'si_updateclient --server <mgmtnode-ip> --yes'