Skip to content

darranl-archive/2020-galleon

 
 

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Java 99.9%
  • Other 0.1%