{"id":18544059,"url":"https://github.com/swagdevops/ylem","last_synced_at":"2025-05-15T05:31:09.043Z","repository":{"id":54508851,"uuid":"91987021","full_name":"SwagDevOps/ylem","owner":"SwagDevOps","description":"Another minimal init system for Unix/Linux containers","archived":false,"fork":false,"pushed_at":"2024-05-16T18:58:20.000Z","size":395,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-17T09:15:13.289Z","etag":null,"topics":["containers","init","init-system","linux","startup-process","unix"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SwagDevOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-21T20:55:17.000Z","updated_at":"2021-05-17T18:08:39.000Z","dependencies_parsed_at":"2024-12-26T05:41:51.140Z","dependency_job_id":"89de3c8f-9048-4330-b959-afb4ad473caf","html_url":"https://github.com/SwagDevOps/ylem","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fylem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fylem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fylem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fylem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SwagDevOps","download_url":"https://codeload.github.com/SwagDevOps/ylem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254281756,"owners_count":22045015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["containers","init","init-system","linux","startup-process","unix"],"created_at":"2024-11-06T20:15:15.210Z","updated_at":"2025-05-15T05:31:09.027Z","avatar_url":"https://github.com/SwagDevOps.png","language":"Ruby","readme":"\u003c!-- ( vim: set fenc=utf-8 spell spl=en: ) --\u003e\n\n# Ylem ``/ˈiːlɛm/`` the primordial matter of the universe\n\n## Principles\n\nDuring the [Linux startup process](https://en.wikipedia.org/wiki/Linux_startup_process),\n``ylem`` is intended to sequentially execute arbitrary \"user scripts\"\n(alphabetically sorted). Moreover ``ylem`` provides [logging](#logging)\nwhich facilitates startup __debugging__.\n\nStartup scripts executed through ``ylem`` SHOULD be aimed to:\n\n* create required files and directories\n* setup users and permissions\n* prepare the system to run deamons\n\nFor example, ``ylem`` COULD start\n[``supervisor``](https://github.com/Supervisor/supervisor),\nto manage daemons, as soon as the system is sufficiently ready.\n\nCreate an ``/etc/ylem/scripts`` directory and put your bootstraping scripts.\nThen scripts are executed alphabetically sorted.\n\n## Sample of use\n\nIn a ``Dockerfile``:\n\n```\nENTRYPOINT [\"dumb-init\", \"-c\", \"--\", \"ylem\", \"start\", \"--\"]\nCMD [\"sleep\", \"infinity\"]\n```\n\n## Configuration\n\nThe configuration uses a [YAML syntax](https://en.wikipedia.org/wiki/YAML)\nand remains in ``/etc/#{progname}/config.yml``,\nwhere ``progname`` is ``ylem``.\nFurthermore configuration filepath can be set on the\n\u003cabbr title=\"Command Line Interface\"\u003eCLI\u003c/abbr\u003e.\n\nAvailable configuration keys are:\n\n* ``scripts.path``\u003cbr /\u003e\n  where bootstraping scripts are stored\u003cbr /\u003e\n  default value is: ``/etc/#{progname}/scripts``\n* ``logger.file``\u003cbr /\u003e\n  default value is: ``/var/log/#{progname}.log``\n* ``logger.level``\u003cbr /\u003e\n  default value is: ``INFO`` (see: [Logger::Severity](https://ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logger/Severity.html))\n* ``environment.file``\u003cbr /\u003e\n  default value is: ``/etc/environment``\n  ([System-wide environment variables](https://help.ubuntu.com/community/EnvironmentVariables#System-wide_environment_variables))\n\nMissing configuration keys use default values.\nConfiguration file can be: complete, partial or empty.\n\n\u003c!-- ala github --\u003e\n\u003cdiv id=\"logging\" /\u003e\n\n## Logging\n\nYlem provides its own logging mechanism, based on\n[``Logger``](https://ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logger.html).\nDuring its init process, each handled script is logged to ``logger.file``.\nDepending on ``logger.level`` only the messages with a level greater or equal\nwill be published to the log file.\n\n| Level         | Format          | Summary                             |\n| ------------- | --------------- | ----------------------------------- |\n| ``DEBUG``     | ``/\"BEGIN\"/``   | script started                      |\n| ``INFO``      | ``/\".*\"/``      | script message echoed to ``STDOUT`` |\n| ``WARN``      | ``/\".*\"/``      | script message echoed to ``STDERR`` |\n| ``DEBUG``     | ``/\"ENDED \\[0\\]/\"``     | script ended (success)      |\n| ``ERROR``     | ``/\"ERROR \\[[0-9]+\\]\"/``| script error                |\n\n## Resources\n\n* [Yelp/dumb-init: A minimal init system for Linux containers](https://github.com/Yelp/dumb-init)\n* [Supervisor process control system for UNIX](https://github.com/Supervisor/supervisor)\n* [``/sbin/my_init`` as seen in ``phusion/baseimage-docker``](https://github.com/SwagDevOps/baseimage-docker/blob/master/image/bin/my_init)\n* [``runit`` - a UNIX init scheme with service supervision](http://smarden.org/runit/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswagdevops%2Fylem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswagdevops%2Fylem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswagdevops%2Fylem/lists"}