3 unstable releases
0.1.5 | Oct 28, 2024 |
---|---|
0.1.4 | Feb 9, 2024 |
0.0.1 | Jan 18, 2024 |
#80 in Configuration
138 downloads per month
46KB
829 lines
quadit
A gitops tool to deploy systemd managed containers on linux. A.K.A quadlets.
Introduction
quadit
is focused on managing quadlets and running containers in rootless mode using a gitops model.
The quadit
' core usecase is a remote edge
scenario enforcing a pure pull model that ensures no inbound access to the device.
It is written in rust to minimise the overall footprint and improve the power consumption of running a gitops service on low resourced systems.
For more detail on quadlet see this article.
features
quadit
is a very opinionated reimplementation of the fantastic fetchit podman management system.
Please evaluate the following matrix to understand which one would better suit your needs.
fetchit | quadit | notes | |
---|---|---|---|
simple file transfer | yes | no | May be considered as a feature if required |
ansible | yes | no | Not a quadit goal |
kube | yes | no | Raw yaml files are not a quadit goal |
raw | yes | no | Not a quadit goal |
plain systemd files | yes | no | May be considered as a feature if required |
user quadlet | no | yes | Not available in fetchit See fetchit issue |
root quadlet | no | no | May be considered as a feature if required |
systemd stop | no | yes | Code exists in fetchit but not surfaced in config |
systemd start | no | yes | Not implemented in fetchit |
auto-update | yes | no | quadit is targeting auto configuration but work is yet to commence |
.kube | no | yes | Standard quadlet file type |
.volume | no | yes | Standard quadlet file type |
.network | no | yes | Standard quadlet file type |
.pod | no | yes | Standard quadlet file type |
.container | no | yes | Standard quadlet file type |
install
From the edge device running a systemd based distro with the latest podman the following commands:
sudo setsebool -P container_manage_cgroup true
mkdir ~/.quadit
curl -o ~/.quadit/config.yaml https://raw.githubusercontent.com/ubiquitous-factory/quadit/main/samples/config.yaml
mkdir -p ~/.config/containers/systemd
curl -o ~/.config/containers/systemd/quadit.container https://raw.githubusercontent.com/ubiquitous-factory/quadit/main/deploy/quadit.container
loginctl enable-linger $USER
systemctl --user daemon-reload
systemctl --user start quadit
environment variables
None of these environment variables should need tweaking but the options are documented as they are available.
Name | Default | Description |
---|---|---|
BOOT_URL | Bootstrap the service from remote config.yaml hosted at a url. Overrides the local config.yaml |
|
LOCAL | 'no' | If set to a 'yes' then the exe will assume it's not in a container and run with the local users configuration from $HOME and not use /opt locations |
PODMAN_UNIT_PATH | $HOME/.config/containers/systemd |
The location where the container files should be written on the host machine |
JOB_PATH | Left empty for testing but set to /tmp in the quadit.container file |
|
JOB_FOLDER | jobs |
The name of the folder to save jobs. |
XDG_RUNTIME_DIR | /run/user/%U |
Used by systemd to find a user-specific directory in which it can store small temporary files |
HOME | %u | Set by systemd parameter %u but can be overridden in the quadit.container file |
PODMAN_SYSTEMD_UNIT | %n | Set by systemd - the name of the unit |
LOG_LEVEL | info |
Can be error , warn , info , debug , trace |
SYSTEMCTL_PATH | /usr/bin/systemctl |
Path to the systemctl binary |
Supported Versions
- podman >= 4.8.3
- fedora >= 39
- Red Hat Enterprise Linux >= 8
- ubuntu >= 22.04
development service
cargo install quadit
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or opensource.org/licenses/MIT)
at your option.
Contributions
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.
If you want to contribute to quadit
, please read our CONTRIBUTING notes.
Dependencies
~20–33MB
~560K SLoC