Since you asked for feedback, I’ll use my specific issue with salt on qubes as an example.
What I find infuriating is the lack of introspection and out-of the box debug to help me figure out what breaks, instead of trying to paste error strings into google, or internalizing the entire saltstack codebase. I don’t recall any other tool that was so opaque to debug.
I went three (!!!) steps into the qubes Salt Beginner Guide before getting stuck. Specifically, I activated qubes.user-dirs: sudo qubesctl state.sls qubes.user-dirs, then created a state file to clone a fedora template, and a topfile to call that statefile. Then I ran qubestctl top.enable qubes-test1 (my topfile /srv/user_salt/quest-test1.top), and…
applying state breaks spectacularly:
[ERROR ] Unable to render top file: while parsing a block mapping
in "<unicode string>", line 17, column 1
did not find expected key
in "<unicode string>", line 19, column 5
local:
----------
ID: states
Function: no.None
Result: False
Comment: No Top file or master_tops data matches found. Please see master log for details.
Changes:
Summary for local
------------
Succeeded:
Failed:
------------
Total states run: 1
Total run time: 0.000 ms
DOM0 configuration failed, not continuing
Moreover, I suspect something is broken outside of my config, based on the first few lines; all my config files are way shorter than 17 lines, and the error appears even when I disable my topfile.
So, how do find out where it breaks? Seriously, how?
strace is not available in dom0, and even then I’d be slogging through python startup every time.
Manpage for qubesctl says it should be run instead of salt-call --local, and accepts the same arguments as that tool. Well, that’s pork pies. It doesn’t accept --log-level=debug, for instance.
Except… checking the contents of /usr/bin/qubesctl, it does salt_call() and seems to forward the options, when argv[1] is --dom0-only. Oh man. Except except, fat lot of good it does since the error doesn’t appear in that invocation.
I expect to make mistakes, and I don’t expect tools to be turn-key solutions, but not having a meaningful debug is just hateful.