Architecture
The MiBox stack, as shown in the following diagram, consists of a set of layers, each layer grouping together serveral functions. And the layers in the MiBox stack are described from top to bottom in detail, as well as the functions they are responsible for.
UI
UI at the topmost layer of the MiBox stack provides two types of input for different level of users to configure what services to setup, including the scripted and the file-based.
- Scripted for average users picking out a combination of services to setup following step-by-step tips when running MiBox.
- File-based for advanced users, who have a knowledge of MiBox, configuring services directly by means of local setting file.
Services
Services layer is composed of two sublayers, upper services and underlying services. The former covers a set of services which setup open source tools according to those settings from UI layer, while the latter is also set up as per those settings specified by the former.
The upper services layer includes Migo, Chiliproject, Gerrit, Jenkins, and so on. The underly services layer contains Apache, MySQL, OpenSSH, and the like.
SAL
SAL (Services Abstract Layer) defines a set of service abstractions to distinguish between services.
- SSO (Single Sign On) containing Migo
- PM (Project Managemnt) including Chiliproj
- SCMR (Source Code Management and Review) covering Gerrit and Gitolite
- CI (Continuous Integration) containing Jenkins
- CMS (Content Management System) including Mediawiki
Configuration
Configuration layer provides a set of default settings for all services in each service abstraction.
In addition, setting up a local configuration file for chosen services is to overwrite corresponding default settings.
Core
Core Layer is the heart of the MiBox stack, which stems from the fact that it provides the following functions:
- Initializing MiBox itself
- Launching UI
- Configuring services
- Setting up services chosen
Libraries
Libraries layer provides a set of cross-platform libraries for the upper layers to solve incompatibility between platforms (i.e. distributions) when running MiBox, including:
- Platform retrieving information between plattforms (e.g. architecture, distro)
- Packages installing dependencies for services chosen
- Paths acquiring directory structure of binaries as well as config files
Author
Samuel Mi samuel.miing@gmail.com from Miing.org