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.
In a Dockerfile
:
ENTRYPOINT ["dumb-init", "-c", "--", "ylem", "start", "--"]
CMD ["sleep", "infinity"]
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.
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 |