Skip to content

SwagDevOps/ylem

Repository files navigation

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:

ENTRYPOINT ["dumb-init", "-c", "--", "ylem", "start", "--"]
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