Difference between revisions of "Maintaining local Yaim functions"

From PDP/Grid Wiki
Jump to navigationJump to search
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Local yaim functions ==
+
== Local Yaim functions ==
  
 
Yaim (http://yaim.info/) is the official configuration tool for gLite middleware. It aims to support the basic configuration for typical grid sites. That basic level of configuration may be insufficient for sites, which may use a non-standard or more complex setup. Yaim allows sites to enhance the default configuration setup with so-called "local functions".  
 
Yaim (http://yaim.info/) is the official configuration tool for gLite middleware. It aims to support the basic configuration for typical grid sites. That basic level of configuration may be insufficient for sites, which may use a non-standard or more complex setup. Yaim allows sites to enhance the default configuration setup with so-called "local functions".  
  
Nikhef's grid middleware is configured using Yaim (which is in turned controlled via [[http://quattor.org Quattor]]). The Nikhef site configuration differs from the default in various ways which are facilitated by the use of local Yaim functions. For every glite-yaim-''PRODUCT'' package that needs to be enhanced for our site-specific configuration, we maintain a corresponding package nikhef-yaim-''PRODUCT''. This article describes how to maintain the local packages.
+
Nikhef's grid middleware is configured using Yaim (which is in turned controlled via [[http://quattor.org Quattor]]). The Nikhef site configuration differs from the default in various ways, which is facilitated by the use of local Yaim functions. For every glite-yaim-''PRODUCT'' package that needs to be enhanced for our site-specific configuration, we maintain a corresponding package nikhef-yaim-''PRODUCT''. This article describes how to maintain the local packages (between parentheses their gLite counterparts):
  
== Get the latest sources from CVS ==
+
* nikhef-yaim-bdii (glite-yaim-bdii)
 +
* nikhef-yaim-clients (glite-yaim-clients)
 +
* nikhef-yaim-core (glite-yaim-core)
 +
* nikhef-yaim-dpm (glite-yaim-dpm)
 +
* nikhef-yaim-lcg-ce (glite-yaim-lcg-ce)
 +
* nikhef-yaim-torque-utils (glite-yaim-torque-utils)
 +
* nikhef-yaim-lfc (glite-yaim-lfc)
 +
* nikhef-yaim-scas (glite-yaim-scas)
 +
* nikhef-yaim-wms (glite-yaim-wms)
 +
* nikhef-yaim-lb (glite-yaim-lb) //Although the latest version is glite-lb-yaim
 +
* nikhef-yaim-dgas
  
Do a checkout or update of the directory '''nl.nikhef.ndpf.yaim''' from the
+
The source code for the above packages is kept on the Subversion server under repository ndpf/nl.nikhef.ndpf.yaim; there is one directory per package. Each directory contains the same files and directories:
CVS repository. It will create a sub directory nikhef-yaim-local containing the sources.
 
  
The CVS repository requires the following environment:
+
+ functions/local/
 +
+ config.version
 +
+ Makefile
 +
+ template.spec
  
CVSROOT=:ext:ronalds@beerput.nikhef.nl:/cvs/ndpf
+
The files Makefile and template.spec are required for building the package. The version information is taken from file config.version. Under directory functions/local, the modified versions of the configuration functions are defined.
CVS_RSH=ssh
 
  
 +
The next sections describe how to checkout, modify, build and install these packages holding the local Yaim functions.
  
 +
== Get the latest sources from the Subversion repository ==
 +
 +
Checkout the sources from the Subversion repository
 +
 +
svn co svn+ssh://svn@ndpfsvn.nikhef.nl/repos/ndpf/nl.nikhef.ndpf.yaim
 +
 +
or update a working copy of '''nl.nikhef.ndpf.yaim'''. Under this directory, there is one sub-directory per package holding local Yaim functions.
  
 
== Modify the sources ==
 
== Modify the sources ==
Line 21: Line 40:
 
''You'' should know how to do that :-)
 
''You'' should know how to do that :-)
  
 
+
This is a non-trivial task that requires (manual) identification of the differences between two successive gLite Yaim releases (per function!), followed by merging them into the local Yaim function (if it exists). The use of tools like diff3 is recommended!
  
 
== Build the package ==
 
== Build the package ==
Line 40: Line 59:
  
  
== Use the freshly built rpm from Quattor profiles ==
+
== Install the nikhef-yaim-* packages via Quattor ==
  
 
Copy the rpm built in the previous step to a repository on the Quattor server stal.
 
Copy the rpm built in the previous step to a repository on the Quattor server stal.
Line 46: Line 65:
 
Ensure that the rpm is owned by the user ndpfmgr.
 
Ensure that the rpm is owned by the user ndpfmgr.
  
To include the new version of nikhef-yaim-local in the Quattor profiles, edit the template
+
The nikhef-yaim-* packages are installed via Quattor. The exact version of each package may depend on the gLite update version that is installed (gLite updates may imply installation of a backward-incompatible version of a glite-yaim-* package and the corresponding nikhef-yaim-* package). The Quattor templates that define the desired versions are found in:
  $L/cfg/facility/<FACILITY>/lcg2/yaim/pro_lcg2_config_yaim.tpl where $L is the base directory of the Quattor configuration.
+
 
 +
  grid/glite-''<VERSION>''/update/''<UPDATE>''/ndpf-yaim.tpl
 +
 
 +
(the file is located under $L/cfg, where $L points to the base directory of the Quattor tree). In the above, ''<VERSION>'' denotes the gLite version (e.g., 3.1) and ''<UPDATE>'' represents the update level for that gLite version.
 +
 
 +
The layout of the file ndpf-yaim.tpl consists of a number of conditional updates:
  
Search this file for the following lines:
+
if ( exists( x[escape( "glite-yaim-XXX")] ) ) {
 +
  x = pkg_repl("nikhef-yaim-XXX", "a.b.c-d", "noarch");
 +
};
  
# NIKHEF local yaim setup
+
(i.e., the local package is only installed if its glite counterpart is installed).
"/software/packages" = pkg_repl("nikhef-yaim-local", "X.Y.Z-R", "noarch");
 
  
where ''X.Y.Z'' is the version number and ''R'' the release number.
 
Change the version and release numbers to match those of your package.
 
  
Finally, make and deploy your quattor profile!
+
Finally, make and deploy your quattor profile according to the procedure described in the article [[How_to_work_with_our_Quattor_setup]]!
  
 
'''Note:'''
 
'''Note:'''
The ncm-yaim component only executes when it detects changes in its configuration file.
+
The ncm-yaim component only executes Yaim when it detects changes in its configuration file.
To manually trigger execution of the yaim configuration, execute the following command:
+
To manually trigger execution of the Yaim configuration, execute the following command as root on the node to be reconfigured:
  
  ncm-ncd --configure yaim
+
  /bin/rm -f /etc/siteinfo/lcg-quattor-site-info.def && ncm-ncd --configure yaim
  
or even
+
(via Quattor) or bypassing Quattor:
  
  /opt/lcg/yaim/scripts/configure_node /etc/lcg-quattor-site-info.def <NODE TYPE> [NODE TYPE] ...
+
  /opt/glite/yaim/bin/yaim -c -s /etc/lcg-quattor-site-info.def -n <NODE TYPE> [-n <NODE TYPE>] ...

Latest revision as of 15:58, 16 November 2010

Local Yaim functions

Yaim (http://yaim.info/) is the official configuration tool for gLite middleware. It aims to support the basic configuration for typical grid sites. That basic level of configuration may be insufficient for sites, which may use a non-standard or more complex setup. Yaim allows sites to enhance the default configuration setup with so-called "local functions".

Nikhef's grid middleware is configured using Yaim (which is in turned controlled via [Quattor]). The Nikhef site configuration differs from the default in various ways, which is facilitated by the use of local Yaim functions. For every glite-yaim-PRODUCT package that needs to be enhanced for our site-specific configuration, we maintain a corresponding package nikhef-yaim-PRODUCT. This article describes how to maintain the local packages (between parentheses their gLite counterparts):

  • nikhef-yaim-bdii (glite-yaim-bdii)
  • nikhef-yaim-clients (glite-yaim-clients)
  • nikhef-yaim-core (glite-yaim-core)
  • nikhef-yaim-dpm (glite-yaim-dpm)
  • nikhef-yaim-lcg-ce (glite-yaim-lcg-ce)
  • nikhef-yaim-torque-utils (glite-yaim-torque-utils)
  • nikhef-yaim-lfc (glite-yaim-lfc)
  • nikhef-yaim-scas (glite-yaim-scas)
  • nikhef-yaim-wms (glite-yaim-wms)
  • nikhef-yaim-lb (glite-yaim-lb) //Although the latest version is glite-lb-yaim
  • nikhef-yaim-dgas

The source code for the above packages is kept on the Subversion server under repository ndpf/nl.nikhef.ndpf.yaim; there is one directory per package. Each directory contains the same files and directories:

+ functions/local/
+ config.version
+ Makefile
+ template.spec

The files Makefile and template.spec are required for building the package. The version information is taken from file config.version. Under directory functions/local, the modified versions of the configuration functions are defined.

The next sections describe how to checkout, modify, build and install these packages holding the local Yaim functions.

Get the latest sources from the Subversion repository

Checkout the sources from the Subversion repository

svn co svn+ssh://svn@ndpfsvn.nikhef.nl/repos/ndpf/nl.nikhef.ndpf.yaim

or update a working copy of nl.nikhef.ndpf.yaim. Under this directory, there is one sub-directory per package holding local Yaim functions.

Modify the sources

You should know how to do that :-)

This is a non-trivial task that requires (manual) identification of the differences between two successive gLite Yaim releases (per function!), followed by merging them into the local Yaim function (if it exists). The use of tools like diff3 is recommended!

Build the package

The file config.version contains the current version number and release number. To build the rpm while preserving the version and release number in config.version, use the command

make rpm

To build and automatically increase the release number, use

make release

To increase the version number, manually modify config.version and use 'make rpm'.

The resulting rpm package will be available in <BUILDROOT>/RPMS/noarch.


Install the nikhef-yaim-* packages via Quattor

Copy the rpm built in the previous step to a repository on the Quattor server stal. The current location for the package at stal is /project/quattor/www/html/mirror/nikhef. Ensure that the rpm is owned by the user ndpfmgr.

The nikhef-yaim-* packages are installed via Quattor. The exact version of each package may depend on the gLite update version that is installed (gLite updates may imply installation of a backward-incompatible version of a glite-yaim-* package and the corresponding nikhef-yaim-* package). The Quattor templates that define the desired versions are found in:

grid/glite-<VERSION>/update/<UPDATE>/ndpf-yaim.tpl

(the file is located under $L/cfg, where $L points to the base directory of the Quattor tree). In the above, <VERSION> denotes the gLite version (e.g., 3.1) and <UPDATE> represents the update level for that gLite version.

The layout of the file ndpf-yaim.tpl consists of a number of conditional updates:

if ( exists( x[escape( "glite-yaim-XXX")] ) ) {
  x = pkg_repl("nikhef-yaim-XXX", "a.b.c-d", "noarch");
};

(i.e., the local package is only installed if its glite counterpart is installed).


Finally, make and deploy your quattor profile according to the procedure described in the article How_to_work_with_our_Quattor_setup!

Note: The ncm-yaim component only executes Yaim when it detects changes in its configuration file. To manually trigger execution of the Yaim configuration, execute the following command as root on the node to be reconfigured:

/bin/rm -f /etc/siteinfo/lcg-quattor-site-info.def && ncm-ncd --configure yaim

(via Quattor) or bypassing Quattor:

/opt/glite/yaim/bin/yaim -c -s /etc/lcg-quattor-site-info.def -n <NODE TYPE> [-n <NODE TYPE>] ...