Title Drupal automated staging toolkit project proposal
Student Allister Beharry
Mentor Rok Žlender
Abstract
The Drupal automated staging toolkit is a proposed set of code libraries, file schemas and parsers, and code generators, for automatically creating a Drupal site with specific module code versions, sample users and data, and a specific LAMP stack configuration for hosting the Drupal site. The toolkit also has the ability to stage this generated site on an existing physical server location, and also as a self-contained virtual machine consisting of a minimal Linux environment, required LAMP software, and the Drupal site.

The automated staging toolkit is designed to be part of an automated unit- and regression testing environment, by providing testers with a simple, fast way to automatically generate a complete Drupal site running specific code versions, and using specific LAMP server configurations. It is also intended for use as part of a performance and scalability testing environment by providing the ability to rapidly build and then benchmark the effects of different application, web and database server configurations on Drupal site performance and scalability.

This toolkit will be used in the following way:
1. The tester creates or reuses an XML(or other structured) file using a schema describing the Drupal site code-tree, including modules installed/enabled/disabled, and the versions of each module to be used.
2. The tester creates or reuses an XML file using a schema describing the LAMP stack web server, PHP/application server, and database server configuration; e.g Apache vs. Lighttpd, mod_php vs.FastCGI, choice of op-code cache, MySQL vs. PostgreSQL, and so on.
3. The tester creates or reuses an XML file using a schema describing the sample users and content data the site will contain.
4. The parsers take each file and generate scripts in a lightweight language (Python or Ruby or PHP-CLI.) These scripts, when executed, use functions in the code libraries to download Drupal modules, generate database scripts and datasets, and write server configuration files.
5. Given a physical server target location, the Drupal modules, database scripts and server configuration files are deployed to the designated server location, to produce a new, ready-to-test Drupal site.

Time and resource permitting, a builder in the toolkit will also use the generated Drupal site and servers' configuration as input to build a self-contained virtual machine image in Xen, VMWare, or potentially the Amazon EC AMI format. This virtual image can also be be used in testing environments, including advanced performance testing scenarios such as evaluating clustering, distributed database topologies, and alternative storage and computing models like Amazon S3 and Elastic Cloud. The ability to rapidly generate self-contained Drupal virtual machine images will also be extremely valuable to Drupal consultants and solution providers for marketing, prototyping and demonstrating Drupal solutions to potential clients, and large organizations and ASPs like CivicSpace looking to take advantage of the massive benefits of virtualization technology from VMware, Xensource, Amazon, and the like.