Giter Site home page Giter Site logo

galleon's Introduction

Galleon Provisioning

Overview

Galleon is a provisioning tool designed to create and maintain software distributions that consist of one or more products (or components). The tool supports:

  • adding products to a distribution;

    • their default and customized configurations;

  • removing products from a distribution;

  • integration of the products in the distribution;

  • resolution and validation of the resulting configuration and runtime dependencies;

  • patching and version updates;

  • product-specific provisioning plugins;

  • detection of the changes in the provisioned distribution (its filesystem content and/or its configuration) applied by the user manually or by means of other management tools

    • to be able to preserve them after a version upgrade (having made sure the changes are compatible in the new version)

    • or create a provisioning configuration that could be used to reproduce the state of the distribution including the user changes;

  • exporting the provisioning configuration of the current state of the distribution with the goal to reproduce it later at another location.

The tool includes a command-line interface and a public API. There is also a Maven plugin that allows provisioning a distribution according to the provided configuration.

Download and Installation of the Command Line Tool

Releases of the command line tool are available on the releases page.

Download and unzip the release zip and add the bin dir to your system path. Use galleon.sh or galleon.bat to launch the tool.

Project Modules

Module galleon-parent

Defines main version and common dependencies of the project.

Module core

General provisioning and feature-pack API. Which allows to provision the desired installation specification at a specified location, install additional and/or uninstall existing feature-packs, export the currently provisioned specification to a file with the purpose to reproduce it at a different location.

Module cli

Command line interface which allows to:

  • Build feature-packs and install them into the Maven repository;

  • Provision an installation by pulling the feature-packs from the Maven repository and installing them at the specified location.;

  • View the currently provisioned installation specification;

  • Export the currently provisioned installation specification to a file with goal to reproduce the installation later.

The Maven assembly plug-in is configured to create a single executable JAR file which contains all the dependencies.

CLI Commands

FileSystem commands

The following filesystem commands are available:

  • cd - change current work directory

  • pwd - print current work directory

  • mkdir - create a new directory if it does not already exist

  • ls - list the content of a directory

  • less - display the content of a file

  • rm - remove a file

provision-spec

[workdir]$ provision-spec <spec-file-path> [--dir=<installation-dir>]

(Re-)Provisions the installation according to installation specification provided in an XML file.

Arguments:

<path>        - filesystem path to the XML file describing the desired
                installation specification.

--dir         - optional, target installation directory. If the argument is
                missing, the current work directory is assumed as the target.

install

[workdir]$ install <feature-pack-gav> [--dir=<installation-dir>]

Adds the feature-pack to the installation specification (or creates a new spec if one does not exist yet) and (re-)provisions the target installation.

Arguments:

<feature-pack-gav>  - groupId:artifactId:version of the feature-pack to install.

--dir         - optional, target installation directory. If the argument is
                missing, the current work directory is assumed as the target.

uninstall

[workdir]$ uninstall <feature-pack-gav> [--dir=<installation-dir>]

Removes the feature-pack from the installation specification and (re-)provisions the target installation.

Arguments:

<feature-pack-gav>  - groupId:artifactId:version of the feature-pack to
                      uninstall.

--dir         - optional, target installation directory. If the argument is
                missing, the current work directory is assumed as the target.

provisioned-spec

provisioned-spec display

[workdir]$ provisioned-spec display [--verbose] [--dir=<installation-dir>]

Displays the currently provisioned installation specification.

Arguments:

--verbose(-v) - whether to include feature-packs not explicitly chosen by
                the user but installed as dependencies of other feature-packs.

--dir         - optional, target installation directory. If the argument is
                missing, the current work directory is assumed as the target.

provisioned-spec export

[workdir]$ provisioned-spec export <file-path>

Exports the currently provisioned installation specification to the specified file in the XML format. The resulting file can be used as an argument to provision-spec command.

Arguments:

<file-path>   - file path to store the provisioned specification to.

Building and launching the tool

The tool can be built by executing the following Maven command:

mvn clean install

The executable JAR will be built in cli/target/galleon-cli.jar

There is also a convenience do.sh script in the root directory of the project. If executed w/o arguments, it’ll build and launch the tool.

./do.sh build will only build the tool. ./do.sh run will only launch the already built tool.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.