supervision - discussion about system services, daemon supervision, init, runlevel management, and tools such as s6 and runit
 help / color / mirror / Atom feed
From: Ihor Antonov <ihor@antonovs.family>
To: supervision@list.skarnet.org
Cc: supervision@list.skarnet.org
Subject: Re: s6-rc user experience question
Date: Sun, 16 Oct 2022 09:02:28 -0700	[thread overview]
Message-ID: <20221016160228.bypf5lyje6wfvbnc@localhost> (raw)
In-Reply-To: <em131ebfcd-9252-4bf2-b26c-b4c1dc18180d@aef3e1a9.com>

On 2022-10-16 10:39, Laurent Bercot wrote:
>  ...
>  I agree it's confusing, and one of the reasons (but not the main one)
> why s6-rc needs a redesign: you currently get access to all the internal
> workings of the service manager, even when they're not relevant to you,
> which is not ideal.
 
Perhaps I can offer a few suggestions how to improve usability:
  - combine compile + svscan on empty dir + init steps into one, like
    `s6-rc init source_dir` and it does those steps under the hood.

  - maybe instead of creating file based database take on sqlite as a 
    dependency and keep compiled + live state there? sqlite is
    ubiquitous and very light weight. It can save the trouble of
    inventing our own compiled database formats and folder strucutres


> ... 
>  Having this duplication is the only way of ensuring that your
> modifications do not change the snapshots you take when compiling and
> do not impact the current machine state, and also that the operation
> of your current services does not impact the set of services you're
> booting on (which could lead to failed boots).
> 
>  Other service managers do not make the distinction between the
> user working set, the system working set, and immutable snapshots; that
> is a big issue I have with them, because it's difficult to make them
> safe.

This makes sense. Popular cloud infrastructure management tool Terraform
does this too. It does 3-way diff on each operation, comparing desired
state of the system, currently observed state, and state recorded after
finishing previous operation. This way it knows when things need to be
added/removed/modified. This cannot be done reliably with 2-way diff
approach, and tools like ansible fall short here. Removal of a resource
from ansible playbook simply makes ansible forget about it, where
terraform detects the absense and undersands that previously managed
resource needs to be de-provisioned.

What you describe sounds very similar, but applied to the state of
service dependency tree.


>  Hope this helps,
It does, thank you. What are your plans / thoughts on s6-rc redesign?

Ihor

  reply	other threads:[~2022-10-16 16:02 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-16  6:28 Ihor Antonov
2022-10-16 10:39 ` Laurent Bercot
2022-10-16 16:02   ` Ihor Antonov [this message]
2022-10-17 13:11     ` Laurent Bercot
2022-10-17 15:43       ` Ihor Antonov
2022-10-17 21:32         ` Laurent Bercot
2022-10-18  1:13         ` Alexis
2022-10-18  3:14           ` Ihor Antonov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221016160228.bypf5lyje6wfvbnc@localhost \
    --to=ihor@antonovs.family \
    --cc=supervision@list.skarnet.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).