s6/s6-rc policy for Gentoo: config files for service scripts
Paul Sopka <[email protected]> Wed, 18 Sep 2024 21:43:40 +0200
| Newsgroups | gmane.comp.sysutils.supervision.general |
|---|---|
| Message-ID | <[email protected]> |
Hey everybody,
yes this project is still alive and making progress - but real life is
taking its time toll.
I want to spark another discussion to collect some arguments and
perspectives:
As of now I have had the following structure:
- The package manager puts service source directories for both user and
system services to /usr/lib/s6-rc/{user,system}/src/service.
- The package manager puts initial bundles to
/etc/s6-rc/{user,system}/src/bundles;
those can be changed by the sysadmin to decide whatever is startet when.
- Custom services can be created at /etc/s6-rc/{user,system}/src.
- The package manager puts initial per-service config files to
/etc/s6-rc/{user,system}/config,
those can the be changed by the sysadmin to configure system
services and set global defaults for user services.
- The sysadmin or the user can copy a skeleton from
/etc/s6-rc/skel/{config,src} (which is populated by the package manager
with configs and initial bundles)
to ${HOME}/.config/s6-rc/, this folder shall be used for
configuration and custom user services.
That is the current state I have been running on my Desktop for ~2 Months.
After reading through Nosh (https://jdebp.uk/Softwares/nosh/), its ideas
and its documentation,
as well as reading through some forums of both BSD and Linux, I have
encountered an alternative idea,
which is, as far as I know, the old standard anyway:
- The package manager puts service source directories and an initial set
of bundles
for system services to /etc/s6-rc/system/src/{services,bundles}.
- The package manager puts service source directories and an initial set
of bundles
for both user and system services to /usr/share/s6-rc/{user,system}
as a reference of the defaults.
- The sysadmin or the user can copy a skeleton from
/etc/s6-rc/skel/{config,src} (which is populated by the package manager
with configs and initial bundles)
to ${HOME}/.config/s6-rc/, this folder shall be used for configuring
existing and custom user services.
- The idea of config files is completely dropped and the "editing the
config" part is shifted to "editing the run-script"
Following are my current thoughts about this:
Advantages:
- Simplicity: I have realized that parsing and importing the KEY=value
pairs from the config files makes up about 80% of each service script.
Removing config reduces the amount of files and
directories enormously and makes the scripts very small, hence easy to
understand and customize.
- Flexibility: A sysadmin has way more options in changing the script
than in changing the KEY=value pairs.
Apparent disadvantages:
- "Beginner friendliness" is way higher for simple KEY=value config files
Counter argument: From my experience, people that would be able to
edit configs but not scripts, do not edit service files anyways,
whilst those who do are profiting
from the finer control the script editing offers.
Disadvantages:
- User services that first source a config file at
/etc/s6-rc/user/config and after that another one at
${HOME}/.config/s6-rc/config
can have global defaults set by the sysadmin from the former, this is
not possible with a non-config approach.
- Config allow to group and expose the most relevant options in self
explaining variable names requiring less insight by the sysadmin.
Counter argument: The sysadmin is most likely pretty invested in the
program the service file he is editing belongs to anyway,
hence he wants to deviate from the
default.
What do you think is better and why?
Do you suggest any alterations or even a completely different approach?
Regards,
Paul
OpenPGP_0x71C7C85A2EA30F62.asc
(application/pgp-keys, 3.1 KB)
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 8QRhtw== =hu4K -----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc
(application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEEklpwGqZx1YzBW1hqccfIWi6jD2IFAmbrLWwFAwAAAAAACgkQccfIWi6jD2LU CA//ZBd8q2fURifjgo6MqAduZAIP3mhdsoYgXoqQv8B+ez2QEdESh6mjMdpAfoEWo2g0m0/sA7XI kzl1ZlI/WxxzSU1jYsqcKxhvCiaeGFcX1/6qJY+LlKRnVBVkuJsga2b7hg/cTf6BEx2vm4DcS9ig SNi9NLb8k1iN3rmnta/pYZsOM5BYvr8t8hLDRWe/VHO6atbQyqGMN1jie0zZjS1+pbNmuVtO4Mdf h7LI9us5TiQPaTiTEI+Cm3Ji+gP2UZCEBX04ee42bnK5tWWd+xcxy3mJJZLw4o5mqi6LYXLfiPfc 7CqFG58x/wVgFQpXbuCoegptbQkneQA+tZceVLSdJHIR03ocOOjo0OnSJ3Gm56b1nxvjj3MnKU6+ Zo2YqdbTWJG1t/c4AXKQ1DaauMyie24knBqoNlDU95TFU06BwM/RQPTqYTz9AWLNxKINWLeG1L7W coguCB6UoRh0mZ1iA3HrCf/GkjMbtB7gNlmgMrkkzeX7BBPnO95jO3Fy69BTLIT2oFcGYqlNJESn OT+HFeTDn6YTxP+8MmyrRjUhrAcWeQ7P5U5PBTvf1CS8HkRxBLAPbYG4JOvA3MecC9WbeoZA73Uy POL2IDISQeKm7KYjgZgSmdJU6LKIbQ7+FMM75ud9ScXN3Qo9GYfEENCEITIsVhf/bXH5zEdZdDXZ FRE= =DEs8 -----END PGP SIGNATURE-----