Simplifying the deployment of AstroGrid components
Currently, the user who wishes to deploy an AG component has two options:
- Deploy the web archive to their container of choice, and use that container's built-in tools to configure it
- Use AGINAB to deploy the component, then hand-edit the (mis-)configuration.
Neither option is straightforward, largely due to the lack of documentation provided by AG but also because the container's configuration tools are inadequate (e.g. the string-length limit in the Tomcat admin tool). Furthermore, redeployment of an updated component requires the configuration to be redone. It should also be stressed that AGINAB was never intended as a general deployment tool.
The problem
AG software is usually packaged as a web-archive for deployment in a container such as Tomcat. Typically, installation requires the web-archive to be deployed, the setting up of a working directory, configuration of JNDI properties, and the registration of the component in an IVOA registry. This is beyond the capabilities of free off-the-shelf installers such as
izpack. "Scripting" environments such as Maven and Ant offer the power we need, but are not very userfriendly. Furthermore, when an attempt was made to use Maven as a deployment tool it was found that the maintenance costs of having separate almost-but-not-quite identical scripts for deployment and integration testing (ie AGINAB) were too great.
A solution
Split AGINAB up into separate scripts, each responsible for deploying and configuring a single component. AGINAB will then call these scripts, setting properties appropriate for integration testing. This will make the scripts more manageable and flexible. The scripts can then be reused for deployment in a more general environment.
We also require a GUI to wrap the scripts and make them suitable for non-expert users to run. At the time I proposed this solution no such tool was available, so I wrote a simple one myself:
Antigen. Coincidentally, a very similar tool
Antinstaller was submitted to
SourceForge at the same time, so it's worth keeping tabs on this to see if meets our needs better.
Installers
So far, installers exist for a number of components - download from the
software site.
These are executable jar files that can be run in GUI or non-GUI environments provided
J2SE 1.4+ is available. The user is prompted for configuration options, and these can be saved for later reuse.
The same underlying scripts can be run using maven either via aginab (for installing the astrogrid test setup), or from the individual projects. In the latter case cd to the project's deployment folder and execute
maven install. You will be prompted for config options.
Delivering the installers via webstart
The installers are quite large, due to the necessity of including the Ant libraries, and in some cases Axis code to allow registration via webservices. Delivering the installers via webstart would offer the advantage of only having to download shared libraries once. Unfortunately there are a number of issues:
- Some target machines do not offer GUI environments from which the JNLP files can be launched (is there a commandline way of launching webstart apps?)
- All the code would need to be signed, which means that we'd have to alter the build process to produce signed versions of all of our (and third party) jars.
Given these obstacles, this option is on hold until someone demonstrates a need for it.
--
JohnTaylor - 06 Apr 2005