Skip to content

Latest commit

 

History

History
75 lines (54 loc) · 3.86 KB

README.md

File metadata and controls

75 lines (54 loc) · 3.86 KB

============

What is Scope?

When deploying applications on the cloud, creating machines, installing, configuring and running applications becomes a daily task. Scope comes to the aid, by providing the ability to provition a system, install a range of applications on it and make them run together.

All that, in a single click, without having to go through any cloud-dashboard, without copying any files and without medling with configurations.

Supported Enviroments

Scope uses jclouds as its orchestration abstraction layer and has been tested with the following providers: AWS, VMware vSphere, Rackspace and OpenStack.

Scope product

A SCOPE deployment consists of a "product". It defines the structure of the final deployment, the number of VMs, which application will we be installed on which VM and many other details.

Once a SCOPE product is defined, it can be deployed again and again on each of the virtualization enviroments that SCOPE supports, with no required changes to the product. The product will be installed on the virtualization environment that Scope is configured to work with.

GlusterFS Product is an example of a product that installs GlasterFS, a distributed filesystem, on two VMs.

Structure

A Scope product is a directory containing three sub-directories: materializer, prodpuppet and yum. The name of the top directory is should be <name>-<version>, where name and version are the name and the version of the product.

Here is the folder structure of the GlusterFS Scope Product, provided by the default Scope intallation:

Materializer

materializer directory will contain 'run.sh' or 'run.bat' script that will actually run the materializer.
the materializer output would be the deployment capture of the current product instance.

Materializer input

The materializer input is:
  1. Instance as json string
  2. Product as json string
separated with ~;~

Product Json sample:

{
    "_id" : "Gluster-3.4.2.1",
    "productName" : "Gluster",
    "productOptions" : [{
        "key" : "nodecount",
        "label" : "Number of gluster nodes to build",
        "optionType" : "string",
        "defaultValue" : "2",
        "enumeration" : ["2"]
    }],
    "productVersion" : "3.4.2.1",
    "repoUrl" : "http://<products-server>/scope-products/Gluster-3.4.2.1/"
}

Materializer output

The materializer output has this schema:

TBD

run.bat/sh

The materializer directory should contain "run.sh" or "run.bat" depends on the operating system scope server run on. This script should actually run the materializer application. so you can write it in any language you want.

prodpuppet

This directory should contains the puppet for each component the product should install.

yum

This directory should contain all the RPMs the product needs, includes all dependencies.