grass
Overview

Grass is an open source tool for managing configuration files of an application, which needs to be deployed in various target environment during their development/maintenance life cycle. An application after development could  be deployed in various environments like System Integration Testing, Performance Testing, User Acceptance Testing, Staging and Production environment.

An application may have many configuration files to configure different application components. These applications could also be deployed in wide variety of environments. For each of these environment,  there would be a different set of same configuration files. These different set of configuration files define the same set of configurable parameters, but with different values specific to that target environment. As a result of this the number of configuration files to be created and maintained increases significantly.  Let us take a config file called datasource.xml, defining database settings. For each environment a datasource.xml has to be created to define appropriate settings for the environment. If there are 5 config files and 5 different environments, then totally 25 different config files have to be created and maintained.

Grass simplifies the task of defining and managing config files for multiple target environment. It uses one base set of config files and the xml based grass config file for generation of config files for different environment. The grass config file contains grass tool settings, details of different target environment, set of config files for a target and set of token values for a target. This data is used by grass, in generation of config files for each defined environment.

The configuration files of an application may be classified into two categories namely, static and dynamic configuration files. The dynamic configuration files have replaceable tokens. These tokens can be replaced with environment specific value. The static configuration files are fixed and have no replaceable tokens. An application may have multiple target environments. Configuration files and Token values for different target environments are specified in grass config file. 

Grass config builder tool can be run as a command line utility to generate the config files for different environments. It also provides an Ant task, which can be used to generate config files from Ant build script. Grass eclipse plug in provides a GUI tool to manage and generate application config files frm the IDE (integrated development environment).

Copyright © 2007,  grass - Saravana Aravind R