-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Separate Sshable user and initial unix user in assemble_with_sshable #3008
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes seem fine to me, but I'm not sure if this separates the arguments. This looks like it just converts a required positional argument to an optional keyword argument. Maybe the backstory should be inserted into the commit message?
there is an aliasing issue, in that both Vm has a |
This patch is intended to be a semantic no-op as applied, but once managed services have been adapted to install their `rhizome` programs into the `rhizome` home directory and use the `rhizome` user to execute them (like `VmHost`s), the call sites currently specifying `sshable_unix_user: "ubi"` can stop specifying `sshable_unix_user` and rely on the default value `rhizome`. `Sshable` was originally designed exclusively for the `rhizome` user to support running its programs. This changed in commit 51ee438 to support E2E test cases requiring standard cached SSH access without needing rhizome installation (initially introduced in 68f0c7a). It was later adapted for GitHub Actions, which learned to bypass the `rhizome` upload phase for performance gains and meeting specific unix user naming requirements for parity with first-party GitHub Action Runners. We saw firsthand that minor deviations here could lead to confusion, including an inconsistency seen in the GitHub Actions product: see e2329cc. It so happens both of these use cases involve using a single, bootstrapped user as the only user clover is aware of or needs to be aware of. But, it was incorrectly extended to services with full `rhizome` directories and upload steps. This was an oversight. Despite creating a separate `rhizome` user, `rhizome` programs were loaded into the home directory of `ubi`, and both automation and personnel used the same unix user to log in and `authorized_keys` file to log in, which made `authorized_keys` more awkward to update than the arrangement seen on VM Hosts, which was intended to be the default arrangement. Although both `Sshable` and `Vm` have parameters and database fields named `unix_user`, they originated independently for distinct purposes. I think their shared naming, while typically a useful heuristic for coupling in Clover's codebase, contributed to this repeated oversight.
Why is everyone approving a draft pr? |
I didn't unmark it as draft because I was waiting for CI, which is kinda slow these days compared to my historical norm, but I had to take off before it finished. But also, unlike historical norms, I usually asked for reviews even before letting tests runs (and failing them), but this annoyed @pykello that one time because I wrote code and tagged him when it was quite broken, on the optimistic principle that no one was going to review my stuff that fast. My solution was this was to use draft until CI finished, which is now lengthy time wise. Maybe I'll take a middle-ground where, if I actually bothered running the local test suite (for that fix that I broke and annoyed @pykello, I didn't) and am reasonbly sure it'll succeed, I'll take it out of draft. |
This patch is intended to be a semantic no-op as applied, but once
managed services have been adapted to install their
rhizome
programsinto the
rhizome
home directory and use therhizome
user toexecute them (like
VmHost
s), the call sites currently specifyingsshable_unix_user: "ubi"
can stop specifyingsshable_unix_user
andrely on the default value
rhizome
.Sshable
was originally designed exclusively for therhizome
userto support running its programs. This changed in commit
51ee438 to support E2E test cases
requiring standard cached SSH access without needing rhizome
installation (initially introduced in
68f0c7a).
It was later adapted for GitHub Actions, which learned to bypass the
rhizome
upload phase for performance gains and meeting specific unixuser naming requirements for parity with first-party GitHub Action
Runners. We saw firsthand that minor deviations here could lead to
confusion, including an inconsistency seen in the GitHub Actions
product: see e2329cc.
It so happens both of these use cases involve using a single,
bootstrapped user as the only user clover is aware of or needs to be
aware of. But, it was incorrectly extended to services with full
rhizome
directories and upload steps. This was an oversight.Despite creating a separate
rhizome
user,rhizome
programs wereloaded into the home directory of
ubi
, and both automation andpersonnel used the same unix user to log in and
authorized_keys
fileto log in, which made
authorized_keys
more awkward to update thanthe arrangement seen on VM Hosts, which was intended to be the default
arrangement.
Although both Sshable and Vm have parameters and database fields named
unix_user
, they originated independently for distinct purposes. Ithink their shared naming, while typically a useful heuristic for
coupling in Clover's codebase, contributed to this repeated oversight.