Code Monkey home page Code Monkey logo

boxgrinder-build's Introduction

BoxGrinder

BoxGrinder is a set of projects that help you grind out appliances for multiple virtualization and Cloud providers.

Visit us at boxgrinder.org, or join #boxgrinder on irc.freenode.net

BoxGrinder Build

BoxGrinder Build is a command line tool to help you build appliances. With an appliance definition and just a single command, BoxGrinder can create your appliance, target it to a platform and deliver it.

Boxgrinder Build Meta Appliance: BoxGrinder the Easy Way

The BoxGrinder Meta appliance is pre-configured with an optimal environment prepared to use BoxGrinder right from launch. Just download the latest appliance from boxgrinder.org in your desired format, launch it, and you're ready to grind out images!

It is a great way to use or test BoxGrinder in a virtual environment without affecting your local system.

Visit the BoxGrinder Meta appliance usage article to learn more.

Supported OSes

At present the project officially supports the following OSes in x86_64 and i386 variants:

  • Fedora (13, 14, 15)
  • RHEL (5.x, 6.x) and CentOS (5.x)

Requirements

  • Acquiring and installing BoxGrinder is very simple, with RPMs ensuring the correct dependencies are pulled and installed. However, depending upon your OS of choice, the prerequisites for installing BoxGrinder vary slightly.
  • Administrative level permissions (root or equivalent)

Fedora

BoxGrinder and all of its dependencies reside within the official Fedora repositories, therefore there are no special requirements. Simply install via your package manager.

RHEL/CentOS

EPEL and BoxGrinder repositories locations must be added to your package manager in order to install BoxGrinder and resolve its dependencies successfully.

For detailed instructions, see: Preparing your environment

Installing

Once the prerequisites are satisfied, install BoxGrinder via a package manager, for instance in YUM;

  • sudo yum install rubygem-boxgrinder-build to install BoxGrinder Build.

Removing

You should remove BoxGrinder through your system package manager, for instance with YUM:

  • sudo yum remove rubygem-boxgrinder*

Usage

BoxGrinder.org's quick-start tutorial is the best place to learn the fundamentals of BoxGrinder Build, enabling you to rapidly leverage the feature-set on offer.

The following sections provide a basic overview of functionality.

Plugins

Most of the features of BoxGrinder Build are provided through plugins, with three primary variants (Operating System, Platform and Delivery), each catering for a phase of the build process. Furthermore, the flexible and extensible structure of BoxGrinder Build enables users to seamlessly add new features and functionality.

As of version 0.9.0 BoxGrinder Build is distributed with standard plugins installed by default.

  • Operating System - provide support to run and build for a given OS
  • Platform - ability to produce appliances for a specific platform, such as Amazon's EC2 or VirtualBox VM
  • Delivery - send the completed appliance, for instance by SFTP or bundled as an AMI and uploaded to S3.

Learn more: BoxGrinder Build, BoxGrinder Plugins

Plugin Configuration

Many plugins allow, or mandate, some degree of configuration before they are executed. These properties are aggregated into a single per-user configuration file, at ~/.boxgrinder/config. The user should consult the documentation of a given plugin to determine what fields it should be configured with, and which fields (if any), are requisite.

plugins:
  sftp:
    host: 192.168.0.1
    username: boxgrinder
    path: /home/boxgrinder/appliances

Learn more: BoxGrinder Plugins

Defining Appliances

Appliances are defined in YAML, the following "JEOS" definition can be used by BoxGrinder to produce a basic, but fully functional appliance;

name: f14-basic
summary: Just Enough Operating System based on Fedora 14
os:
  name: fedora
  version: 14
hardware:
  partitions:
    "/":
      size: 2
packages:
  - @core

Building Appliances

The BoxGrinder Build CLI is a simple interface through which you can instruct BoxGrinder to build your appliances. You can view a brief manual by using boxgrinder-build --help, and version information through boxgrinder-build --version

BoxGrinder Build is run with a mandatory appliance definition, along with optional platform and delivery plugin specifiers. BoxGrinder resolves the packages and associated dependencies in the appliance definition, and installs them into the new image it generates based upon the operating system and versions specified.

boxgrinder-build [appliance definition file] [options]
  • The two most common options are [-p|--platform=] and [-d|--delivery=]. Neither is mandatory, if platform is omitted then only the raw KVM image is created. You can can later return and target a build to different platforms, and BoxGrinder will always reuse the intermediary data where it is available. If you wish to force a rebuild, you can use the [-f|--force] flag.
  • It is possible to manually provide key-value pairs for platform and delivery plugin configuration on the command line. These will override any pre-existing plugin parameters set in the BoxGrinder config file.
  • Shell commands can be executed in post sections of the appliance definition files, which is useful for basic configuration. However, it is advisable that more complex configuration and installation of custom software is performed properly through RPM files. This is often best achieved through local repositories, which can be configured as ephemeral in order to avoid the repository being installed into the resultant image's package manager.

See: BoxGrinder Build Usage Instructions, How to use local repositories

Examples
boxgrinder-build fedora-14.appl -p vmware -d sftp

Build an image based upon fedora-14.appl, and produce an image targeted at the vmware platform. Once complete, deliver by sftp. Note that each of these plugins must be configured in ~/.boxgrinder/conf or by providing the key-value pairs as command-line arguments.


boxgrinder-build fedora-14.appl -p virtualbox -d local

Assuming that BoxGrinder had succeeded in building the prior image, the RAW file is again used as an intermediary without needing to be rebuild. An image targeted at VirtualBox is then produced, and delivered to a local file, as determined in conf.


setarch i386 boxgrinder-build fedora-14.appl

Build an i386 appliance (on an x86_64 machine).

boxgrinder-build's People

Contributors

bmahe avatar goldmann avatar henrysher avatar jgehtland avatar msavy avatar rubiojr avatar t3d avatar

Stargazers

 avatar

Watchers

 avatar  avatar

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.