/riffol

Initialization system in Rust

Primary LanguageRust

Riffol

Riffol is a supervising process that can run as a traditional daemon on Unix-like systems or as an init system for containers (such as tini).

Riffol can be configured by creating application groups that consist of applications and health checks.

   +--------+
   | Riffol |
   +----+---+
        |
        |
        |
 +------v------+
 | Application |
 |    Group    +-------+-------------+
 +------+------+       |             |
        |              |             |
        |              |             |
        |              |             |
 +------v------+   +---v----+   +----v-----+
 | Application |   | Health |   | Resource |
 +-------------+   | Check  |   |  Limits  |
                   +--------+   +----------+

Riffol uses the unified configuration model from https://github.com/riboseinc/event-configuration-models for its configuration syntax definition, startup configuration and also runtime configuration.

Riffol is implemented in Rust.

Building From Source

Make sure there is a Rust environment installed. Otherwise follow the Rust installation guide.

cargo install --git https:/github.com/riboseinc/riffol

This command will build a riffol binary and store it in the bin directory under $CARGO_HOME - usually ~/.cargo/bin/riffol.

Usage

riffol [-f config-file]

Riffol requires a configuration file. The default location of this file is /etc/riffol.conf.

This location can be specified either via the RIFFOL_CONFIG environment variable or by using the -f command line flag.

Configuration

…​ Riffol?

The eggs of a female salmon are called her roe. To lay her roe, the female salmon builds a spawning nest, called a redd, in a riffle with gravel as its streambed. A riffle is a relatively shallow length of stream where the water is turbulent and flows faster.

By spelling "riffol" with an O, we are putting the chemical symbol for oxygen in the word: we are oxidising Riffol. Which makes sense, since Riffol is in Rust.