qusal/docs/TROUBLESHOOT.md
2024-07-18 15:41:09 +02:00

104 lines
3.4 KiB
Markdown

# Troubleshooting
Qusal troubleshooting guidelines.
## Table of Contents
* [Detect if your issue was already opened](#detect-if-your-issue-was-already-opened)
* [Qrexec client shows Request refused](#qrexec-client-shows-request-refused)
* [Salt wrapper qubesctl command fails](#salt-wrapper-qubesctl-command-fails)
* [Get Salt management information](#get-salt-management-information)
* [No support for unfinished formulas](#no-support-for-unfinished-formulas)
## Detect if your issue was already opened
If you encounter any problems, search the project's
[issue tracking system](https://github.com/ben-grande/qusal/issues?q=is%3Aissue+sort%3Aupdated-desc)
for `Open` and `Closed` issues, sorted by `Recently updated`. For finer
grained search, consult the
[tracking system filter syntax](https://docs.github.com/en/issues/tracking-your-work-with-issues/filtering-and-searching-issues-and-pull-requests#using-search-to-filter-issues-and-pull-requests).
## Qrexec client shows Request refused
The Qrexec call was denied, either by a missing rule, an explicit deny or a
typo in the configuration.
Therefore, it is recommended to:
* Check if there is a rule for the service you want to call that would
either result in `ask` or `allow`; and
* Check again and again if you made a typo in the policy.
The examples below will use the qube `dev` and the RPC service `qubes.GetDate`
and other common Qrexec RPC services as an example, substitute them with the
qube and service you intend to use, such as qube `code` and service
`qusal.GitInit`.
On `dom0`, watch the Qrexec policy logs:
```sh
sudo journalctl -o cat -fu qubes-qrexec-policy-daemon -S -30s
```
If you ave many simultaneous calls being shown, get only the important ones
relevant to the service you are debugging:
```sh
sudo journalctl -o cat -fu qubes-qrexec-policy-daemon -S -30s -g qubes.GetDate
```
You can emulate the call from `dom0`:
```sh
qrexec-policy dev @default qubes.GetDate
```
On the qube making the call, run the `qrexec-client-vm` command directly
rather than using a wrapper around it:
```sh
qrexec-client-vm @default qubes.GetDate
```
## Salt wrapper qubesctl command fails
The Salt Project has [troubleshooting](https://docs.saltproject.io/en/latest/topics/troubleshooting/)
page for a variety of problems you may encounter.
A nice summary of the states can be seen with the `--show-output` argument:
```sh
sudo qubesctl --show-output state.apply pkg.uptodate
```
Ending the Salt call with `-l debug` argument gives the most detailed output
(may contain private information):
```sh
sudo qubesctl state.apply pkg.uptodate -l debug
```
## Get Salt management information
Depending on the operating system of the `management_dispvm`, Salt can fail.
Let's gather some information about it.
Get information about the global `management_dispvm` and the same property of
a specific qube. In this example we use `tpl-qubes-builder`, substitute for
the qube being managed:
```sh
sudo qubesctl state.apply dom0.helpers
qvm-mgmt tpl-qubes-builder
```
## No support for unfinished formulas
If you have been redirect to this section, be aware that the formula you are
using is unfinished and no support will be provided. It is development only
and if you are not a developer, there is a chance you will find yourself lost
on how to debug and revert back to a known good state.
Again, don't try the formula if you don't know how to fix problems that may
arise.