Dister: an Heroku like solution for SUSE Studio

SUSE Studio is an online Linux image creation tool. Creating an appliance to run your Rails application can be quite annoying: there are extra repositories to add, gem dependencies to satisfy, a database to setup, Apache and Passenger to configure, overlay files to add and so on.

You can save some time cloning this appliance shared on SUSE Gallery, but some efforts are still required.

Currently the easiest solution to deploy a Rails application in the cloud is Heroku.

Dister is a command line tool similar to the one used by Heroku. Within a few steps you can create a SUSE Studio appliance running your Rails application, download it and run into your private or public cloud.

SUSE Studio currently supports the following appliance formats:

  • oem: it can be run inside KVM or it can be installed to a hard disk/usb pen.

  • iso and preload iso: you can create a live dvd or an installation dvd.:

  • vmx and ovf: use these formats if you want to run your appliance inside of VMware, VirtualBox or KVM.

  • XEN guest: use this format if you want to run your appliance using Xen hypervisor.

  • ec2: jumping into Amazon's cloud has never been so easy.

More formats are coming. Checkout SUSE Studio for more details.

Currently only MRI Ruby 1.8 is supported, but support for 1.9 and REE is forthcoming.

Common workflow

This section will show the common workflow required to create a SUSE Studio appliance running a standard Rails application.

All the following commands must be executed inside of the root directory of your rails application.

Create

You can create your SUSE Studio appliance using the following command:

dister create APPLIANCE_NAME

This creates a 32bit appliance based on the latest version of openSUSE supported by SUSE Studio. The appliance will use the JeOS template.

You can change the default behaviour using the following command line options:

  • --basesystem: to use something different from openSUSE.

  • --template: to use something different from the JeOS template.

  • --arch: to build a 64bit appliance.

By default all the appliances created by dister have the devel:language:ruby:extensions repository. This repository contains all the Ruby-related packages. It's actively maintained by the openSUSE community and by some Novell employee.

The following packages are automatically added to all appliances:

  • devel_C_C++ and devel_Ruby: these are needed in order to build native gems.

  • rubygem-bundler: this package provides latest version of bundler.

  • rubygem-passenger-apache2: this package is required in order to deploy your Rails application using Apache. All the Apache packages will be automatically installed by SUSE Studio because they are dependencies of rubygem-passenger-apache2.

The create task takes care of uploading some custom build and boot scripts. These scripts take care of initializing your appliance. You can inspect them using SUSE Studio web interface.

Upload your code

In order to add your rails application to your SUSE Studio appliance just execute:

dister push

This will automatically create (or update) your local bundle and upload it to SUSE Studio. Your bundle contains:

  • all the gems needed by your Rails appliance (this is done using bundler).

  • all your code

  • Apache configuration

Build

Building can be triggered using the following command:

dister build

A nice progress bar will be shown.

Testdrive

After your build has completed, you can testdrive your appliance:

dister testdrive

Currently you have to access your testdrive using VNC, but support for the web-based Flash interface is on the way.

Download

If you're happy with what you saw during your testdrive, you can download the appliance:

dister download

You can then deploy it. We want to support direct deployment to EC2 in future versions.

TODO: write more documentation.

License

Dister is released under the MIT license.