The kitinfo File
by
on October 8th, 2007 at 05:52 PM (1424 Views)
To make installing software on your cluster straightforward, Kusu supports kits. A kit is a collection of packages usually bundled in an ISO image.
A kit contains the software packaged for the distribution running on your cluster. Packages called components have the software packages as dependencies and are associated to nodegroups. For instance, a kit providing a client/server application may carry two components; the component installed on the “server” node would pull in the application’s server package via its dependency, while the component installed on “client” nodes would install the application’s client package.
Also contained in the kit is the kit package, which contains a kitinfo file describing the kit. It may also contain plug-ins for some Kusu tools and documentation.
Let’s take a closer look at the kitinfo file describing the base kit:
The file defines two objects. First, kit is a Python dictionary describing the kit itself. Some of this information, such as the description, is stored in the kit package while other information, such as ‘removable’, is used by the kitops tool when installing the kit.Code:1 kit = {'arch': 'noarch', 2 'dependencies': [], 3 'license': 'GPL', 4 'name': 'base', 5 'description': 'Base Kit', 6 'pkgname': 'kit-base', 7 'removable': False, 8 'release': '0', 9 'scripts': [], 10 'version': '0.1'} 11 components = [{'arch': 'noarch', 12 'comprelease': '0', 13 'compversion': '0.1', 14 'name': 'base-installer', 15 'description': 'Component for Kusu Installer Base', 16 'ngtypes': ['installer'], 17 'ostype': '', 18 'osversion': '', 19 'pkgname': 'component-base-installer'}, 20 {'arch': 'noarch', 21 'comprelease': '0', 22 'compversion': '0.1', 23 'name': 'base-node', 24 'description': 'Component for Kusu Node Base', 25 'ngtypes': ['installer', 'compute'], 26 'ostype': '', 27 'osversion': '', 28 'pkgname': 'component-base-node'}]
Second, components is a Python list of dictionaries. Each dictionary describes a component package in the same way the as the kit.
Most of the properties defined in the kitinfo file are self explanatory. Of particular interest though are the ‘ngtypes’ entries on lines 16 and 25. These two entries instruct kitops which nodegroups to associate the components with. As a result, the base-installer component will be associated with installer-type nodegroups and installed on any nodes belonging to such a group. The base-node component, similarly, will be installed on all installer- and compute-type nodes.
The above kitinfo file was written by hand for the base kit. The buildkit tool, which generates Kusu kits, generates the kitinfo file for the kit and bundles it automatically. I’ll cover buildkit in a future post.



Email Blog Entry