This project is not covered by Drupal’s security advisory policy.

Overview

Cyclone allows users to spin up sites on remote hosting providers.

Imagine your users being able to select a site from a list and then provisioning it themselves on the hosting provider of your choice. There is no need for an admin to step in. This is the vision of Cyclone.

Cyclone provides a front end for end users to select and provision sites on a variety of server platforms. The project currently supports Aegir and Pantheon with more to be added over time. The actual provisioning is controlled by a Jenkins server with Cyclone Jenkins installed. Cyclone runs a job on Jenkins which in turn performs tasks on the target Provider. Jenkins then communicates back to Cyclone the outcome of the job. If all goes well, the user is then sent an email so that they can then access their site.

How does it work? Here it is in a nutshell.

Backend preparation

  1. Sort out some hosting at an Aegir host or Pantheon.
  2. Set up a Jenkins server and configue a cyclone job.

The setup process

  1. Install cyclone, a builder, a provider and cyclone_template
  2. Configure the builder and provider.
  3. Set permissions. Ensure that anonymous can trigger webhooks.
  4. Add the "Create site form" block to content region for cyc_template_display nodes.
  5. Create a cyc_template_display node ("Demo site") and fill in details.

User flow

  1. User lands on the "Demo site" node on the "central server" and sees the "Create site form."
  2. User fills in site name, sub domain and any site aliases it may have.
  3. A cyc_site node is created and the "site_create" process commences. It is handled by the builder, provider and source specified in the cyc_template. The build process includes running commands against the API provided by the hosting platform.
  4. The builder sends a notification back to the central server informing it of success or failure.
  5. Rules fire and the user is sent an email with the one time login.
  6. User visits site.

Cleanup

  1. Site is destroyed by cron if an expiry date is set.

Cyclone is in early stages of development. Please follow the dev branch. Things will change and possibly break.

We are looking to support a number of different providers. At the moment we only support Aegir and Pantheon as they provide APIs for the creation and destruction of sites. We have plans to implement builders for Acquia, Aberdeen and possibly others.

Features

  • Support for Pantheon and Aegir providers.
  • Support for Jenkins and Example builders.
  • Support for cloning, importing, making and provisioning, depending on the provider.
  • Pluggable architecture for adding more providers and builders.
  • Support for "extensions" which allow for custom code to be run on created sites.
  • Auto destruction of sites which expire.
  • Limits can placed on site creation by users.
  • Rules integration for importent events and notifications.
  • Implement your own "template display" nodes to customise how you want things displayed.
  • Webhook support to listen for various notifications.

Requirements

Cyclone has several dependencies: ctools, date, email, entity, eva, features, field_collection, field_group, file, link, list, machine_name, number, options, rules, strongarm, taxonomy, text, views, webhook, webhook_extras.

Known problems

The cyclone_template module requires the timeperiod module. You need to install the dev version to have it work correctly.

Credits

This module was developed by morpht.com with initial testing and feedback provided by webwash.net.

Thanks to the hosting providers who provide developer friendly APIs for us to use.

Recommended modules

The cyclone project comes with a number of sub modules. You should enable at least one cyclone_provider and one cyclone_builder. This is the minimum required in order to create cyc_site nodes which drive the process.

The cyclone_template module is pretty much essential. It provides the backbone for storing config data for the sites you want to spin up. It also comes with a "create site form" block which exposes a UI so that users can create sites.

If you want to limit the usage of the system to stop spamming etc, please take a look at cyclone_limit.

A related contrib project, cyclone_preserve, provides a method for users of the created site to "preserve" it by notifying the central server.

Similar projects

simplytest.me

The simplytest.me project is similar to cyclone in many ways. The basic architecture of both system includes:

  • a central server,
  • a target server and
  • a source resource (project, site).

The flow is similar as well:

  • a build is triggered by a user on the central server
  • central server receives notifications about the progress of a job
  • user receives an email with details of the build.

However, the two projects have different goals and approaches.

  • cyclone is mainly concerned about building sites. simplytest.me is about testing projects.
  • cyclone is for users not familiar with Drupal to try sites. simplytest.me is for developers to test code.
  • cyclone is pluggable so that it can target 3rd party platforms. simplytest.me builds into its own environment.
  • cyclone can create sites a number of ways: cloning, importing archives, provisioning from a platform, building from a make file, etc. simplytest.me clones projects from drupalcode.org.
  • cyclone uses Jenkins to run the jobs and report back. simplytest.me runs the jobs itself and the sandboxes report back.
Supporting organizations: 
Funded all development.

Project information

Releases