- Yaim
YAIM - YAIM Ain't an Installation Manager, is a tool to configure the middleware of the
EGEE project namely the LCG and gLite software packages.YAIM's official logo - The Yak
Description
Yaim is a software to configure Grid services, but YAIM also can be used as a general purpose configuration tool completely independent from the Grid middleware. The aim of YAIM is to provide simple configuration methods that can be used to set up uniform Grid sites but can also be easily adapted to meet the needs of larger sites. To ensure that all system administrator can adapt YAIM to the local requirements, it has been implemented as a set of bash scripts. To support EGEE's component based release model YAIM 4 has been modularized and a YAIM core is supplemented by component specific scripts, distributed as separate rpms.
tructure
YAIM's modular structure allows a distributed and asynchronous development which is essential in implementing the quickly changing configuration requirements of the Grid Middleware.
The hierarchical configuration storage - which is to reflect the architecture of a Grid Site - and the configurable function behavior make it easy to implement the local settings along with YAIM's default configuration.
Multi-level logging messages could provide detailed information on the ongoing configuration process.
YAIM's directory structure
When a YAIM 4 module is installed the following directory structure is created under /opt/glite/yaim:
* /functions/: Contains the functions the configure each node types. They are all bash scripts.
* /functions/local/: Site administrators can put here their own function definition files. Those will overwrite the default ones coming with the YAIM rpms. The file name has to be the same as the function name defined inside it.
* /functions/pre/: Function definition files having the same name as the original YAIM function but the defined function has the '_pre' suffix. This function - if exists - will be executed before the main function.
* /functions/post/: Function definition files having the same name as the original YAIM function but the defined function has the '_post' suffix. This function - if exists - will be executed after the main function.
* /node-info.d/: Contains a set of files coming with different YAIM modules and they contain the list of functions to be executed during the configuration the that given nodeype. Their name should be the lower-case variant of the node type.
* /defaults/:The filenames in this directory are having the same format as they have in node-info.d with a .pre and/or .post suffix. They are sourced correspondingly before and after the main site-info.def and their purpose is to give meaningful default - if possible - values to the variables used by the given module.
* /bin/: Contains the main yaim executable.
* /log/: The location of YAIM's logfile, yaimlog.
* /examples/: This directory contains an example configuration storage. It's structure is explained in the next section.YAIM's configuration storage
The /examples/ directory in /opt/glite/yaim is just a guideline and serious site admins should not store their configuration files in that location. YAIM allows having the site's configuration in a well separated and protected place. The configuration files of a site are to be stored in a directory structure having a fixed layout relative to the site's main site-info.def file. The site-info.def file has to sit in a directory (ex.: /root/siteinfodir/ ) which could contain the followings:
* /site-info.def: This is the main configuration file of the site, to be sourced first and other optional configuration files will overwrite the values defined here.* /services/: Site administrators can place files into this directory with their names having the same format as in /opt/glite/yaim/defaults. These files are sourced only when the given service is configured, thus enabling service-specific configuration settings.
* /nodes/: Each file in this directory should be the fully qualified name of a host. Only when that host is to be configured, the corresponding file will be sourced which allows host-specific configuration steps to be performed.
* /vo.d/: The entries in this directory are to be named as the lower-case version of a VO to be supported. The file can contain VO specific variables and will overwrite the ones defined in the main site-info.def file.
* /users.conf/, groups.conf: Usually they reside on the same level in the directory hierarchy where the main site-info.def does, but their location is configurable via the USERS_CONF and GROUPS_CONF variables.The bin/yaim executable
Usage:
/opt/glite/yaim/bin/yaim
Actions:
-i | --install : Install one or several meta package. Compulsory parameters: -s, -m-c | --configure : Configure already installed services. Compulsory parameters: -s, -n
-r | --runfunction : Execute a configuration function. Compulsory parameters: -s, -f Optional parameters : -n
-v | --verify : Goes through on all the functions and checks that the necessary variables required for a given configuration target are all defined in site-info.def. Compulsory parameters: -s -n
-d | --debug : Turns "set -x" on, rude debug information for development. Probably you don't want to use it.
-e | --explain : Doesn't perform configuration but explains what the functions are doing by printing out the comments found inside them. Compulsory parameters: -s -n
-h | --help : Prints out this help.
Parameters:
-s | --siteinfo: : Location of the site-info.def file-m | --metapackage : Name of the metapackage(s) to install-n | --nodetype : Name of the node type(s) to configure-f | --function : Name of the functions(s) to executeExamples:
Installation: /opt/glite/yaim/bin/yaim -i -s /root/siteinfo/site-info.def -m glite-SE_dpm_mysqlConfiguration: /opt/glite/yaim/bin/yaim -c -s /root/siteinfo/site-info.def -n SE_dpm_mysql
Running a function: /opt/glite/yaim/bin/yaim -r -s /root/siteinfo/site-info.def -n SE_dpm_mysql -f config_mkgridmap
Verify your site-info.def: /opt/glite/yaim/bin/yaim -v -s /root/siteinfo/site-info.def -n SE_dpm_mysql
The configuration flow
When launching the configuration the different configuration files will be sourced and will overwrite each other in the following order (supposing that we store the site configuration in /root/siteinfo/ directory and configuring service myservice on host myhost and supporting VO myvo):
# /opt/glite/yaim/defaults/site-info.pre
# /opt/glite/yaim/defaults/myservice.pre
# /root/siteinfo/site-info.def
# /opt/glite/yaim/defaults/site-info.post
# /opt/glite/yaim/defaults/myservice.post
# /root/siteinfo/nodes/mynode
# /root/siteinfo/vo.d/myvo
# /opt/glite/yaim/node-info.d/myserviceThen for each function myfunc defined in /opt/glite/yaim/node-info.d/myservice it executes the followings if they are defined:
# /opt/glite/yaim/functions/pre/myfunc.pre
# /opt/glite/yaim/functions/local/myfunc or /opt/glite/yaim/functions/local/myfunc
# /opt/glite/yaim/functions/post/myfuncYAIM's logo - The Yak
The
Yak (Bos grunniens) is a long-haired humped domestic bovine found in Tibet and throughout the Himalayan region of south Central Asia, as well as in Mongolia. The yak is not a gnu.The author of the logo is David O'Callaghan. When he was asked why he has chosen the yak to be the logo of YAIM, he said:
"The Jargon File defines " as "Any seemingly pointless activity which is actually necessary to solve a problem which solves a problem which, several levels of recursion later, solves the real problem you're working on. I think this describes the process of installing and configuring grid systems quite well!"
"YAIM aims to take the pain out of grid system administration. So, I thought a yak would make a good logo for YAIM as we no longer have to spend so much time shaving the yak!"
Download
*
EGEE APT repository:
**rpm http://glitesoft.cern.ch/EGEE/gLite/APT/R3.0/ rhel30 externals Release3.0 updates
** [http://glitesoft.cern.ch/EGEE/gLite/APT/R3.0/rhel30/ Browse]
* CVS repository:
** Anonymous CVSROOT::ext:afs_login@glite.cvs.cern.ch:/cvs/glite
** [http://glite.cvs.cern.ch/cgi-bin/glite.cgi/ Browse]See also
*
EGEE
*LHC Computing Grid
*CERN External links
* [http://yaim.info YAIM main page]
* [https://twiki.cern.ch/twiki/bin/view/EGEE/YaimDevelopersGuide YAIM Developer's Guide]
* [https://twiki.cern.ch/twiki/bin/view/LCG/LcgDocs YAIM User (Sysadmin) Guide]
* [http://glite.web.cern.ch/glite/ The gLite middleware]
Wikimedia Foundation. 2010.