项目作者: SwagDevOps

项目描述 :
Another minimal init system for Unix/Linux containers
高级语言: Ruby
项目地址: git://github.com/SwagDevOps/ylem.git
创建时间: 2017-05-21T20:55:17Z
项目社区:https://github.com/SwagDevOps/ylem

开源协议:GNU General Public License v3.0

下载


Ylem /ˈiːlɛm/ the primordial matter of the universe

Principles

During the Linux startup process,
ylem is intended to sequentially execute arbitrary “user scripts”
(alphabetically sorted). Moreover ylem provides logging
which facilitates startup debugging.

Startup scripts executed through ylem SHOULD be aimed to:

  • create required files and directories
  • setup users and permissions
  • prepare the system to run deamons

For example, ylem COULD start
supervisor,
to manage daemons, as soon as the system is sufficiently ready.

Create an /etc/ylem/scripts directory and put your bootstraping scripts.
Then scripts are executed alphabetically sorted.

Sample of use

In a Dockerfile:

  1. ENTRYPOINT ["dumb-init", "-c", "--", "ylem", "start", "--"]
  2. CMD ["sleep", "infinity"]

Configuration

The configuration uses a YAML syntax
and remains in /etc/#{progname}/config.yml,
where progname is ylem.
Furthermore configuration filepath can be set on the
CLI.

Available configuration keys are:

  • scripts.path

    where bootstraping scripts are stored

    default value is: /etc/#{progname}/scripts
  • logger.file

    default value is: /var/log/#{progname}.log
  • logger.level

    default value is: INFO (see: Logger::Severity)
  • environment.file

    default value is: /etc/environment
    (System-wide environment variables)

Missing configuration keys use default values.
Configuration file can be: complete, partial or empty.

Logging

Ylem provides its own logging mechanism, based on
Logger.
During its init process, each handled script is logged to logger.file.
Depending on logger.level only the messages with a level greater or equal
will be published to the log file.

Level Format Summary
DEBUG /"BEGIN"/ script started
INFO /".*"/ script message echoed to STDOUT
WARN /".*"/ script message echoed to STDERR
DEBUG /"ENDED \[0\]/" script ended (success)
ERROR /"ERROR \[[0-9]+\]"/ script error

Resources