Rocketship helps you launch your software on a linux appliance (physical or virtual).
Companies that ship their product as physical or virtual appliances end up
spending an large amount of time and resources building software to
manage the state of the appliance and provide facilities that make the
product usable. While this is necessary for the product to be stable and
easily serviceable, it distracts from the focus of building the core IP
that is going to provide value to the user. rocketship
is an attempt to
provide the common core functionality needed in order to ship linux based
appliances, allowing you to focus on other things.
What is this core functionality, you ask? Typically, this includes services (outside the core business process) that help usability, serviceability and generally help keep the appliance operational. Some of these include:
- System metrics
- Crash reporting
- Easy (atomic) upgrades
- User login account management
- Command line interfaces (CLI)
rocketship
intends to provide the platform on which you can ship your software
without needing to develop all these peripheral pieces. You place your binary (or
binaries, and accompanying scripts) in the workspace , and let rocketship
build
you an appliance image that you can use to build physical and virtual appliances.
See the wiki for detailed notes on the architecture of the system as well as the processes that
Almost all appliances can be configured using a UI that is accessibly from a web
browser. rocketship
intentionally does NOT ship with any UI because that is a
non-reusable component because every user of project will want to present their
own interface and user experience depending on their business domain. Instead
rocketship exposes a configuration managenemt API which can be invoked from an
UI code.
In order to provide a consistent UX, you'll want to integrate further by letting
rocketship
handle the configuration for your binary so that users can interact with
all system confiration the same way. This involves adding APIs to handle configuration
storage and adding command line tools so users can modify the configuration from the
CLI.
rocketship
software is written using go(lang). In order to build the project, you
need go
to be installed (and $GOPATH
to be set).
- Clone this repo into your
$GOPATH
- Run
./bootstrap-dev.sh
, to detect whether the prerequisite tools are present - Install any missing tools as advised by the output from
bootstrap-dev.sh
- Run
rake -T
to list all the build targets - Invoke the necessary build target