You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Terrarium creates an OVN workload network named `terrarium-ovn` and points the
213
+
default LXD profiles at it. Use at least three cluster members for a real
214
+
quorum-tolerant setup; clustering does not make local ZFS storage magically
215
+
shared.
216
+
217
+
`lxdbr0` stays as the managed parent/uplink network. Host-side Traefik reaches
218
+
published OVN workloads through Terrarium-managed LXD `proxy` devices bound to
219
+
loopback, so it does not depend on direct host routing to private OVN instance
220
+
addresses.
221
+
188
222
## terrariumctl Reference
189
223
190
224
Top-level commands:
@@ -199,6 +233,11 @@ Top-level commands:
199
233
|`terrariumctl reconfigure`| none | n/a | Re-runs the local Ansible reconciliation using the saved config. |
200
234
|`terrariumctl config import`| none | n/a | Imports `/etc/terrarium/config.yaml` into the LXD dqlite-backed config store. |
201
235
|`terrariumctl config export`| none | n/a | Recreates `/etc/terrarium/config.yaml` from the LXD dqlite-backed config store. |
236
+
|`terrariumctl cluster status`| none | n/a | Shows LXD cluster state and the Terrarium OVN network. |
237
+
|`terrariumctl cluster init`| required: `--member`, `--address`; optional: `--central-addresses`, `--peer-cidr`| network `terrarium-ovn`, parent `lxdbr0`| Enables LXD clustering on the first member and reconciles Terrarium OVN networking. |
238
+
|`terrariumctl cluster token`| required: member name | n/a | Mints a single-use LXD cluster join token. |
239
+
|`terrariumctl cluster join`| required: `--token`, `--address`; optional: `--peer-cidr`, `--yes`| storage pool `terrarium`| Joins the local node to an existing LXD cluster, exports shared Terrarium config, and reconfigures. |
240
+
|`terrariumctl cluster ovn configure`| optional: `--central-addresses`, `--peer-cidr`| network `terrarium-ovn`, parent `lxdbr0`| Updates Terrarium OVN central member and peer firewall settings. |
202
241
|`terrariumctl proxy sync`| none | n/a | Rebuilds Traefik dynamic config and Terrarium-managed UFW rules from LXC `user.proxy` labels. |
203
242
|`terrariumctl mount add`| required: `protocol`, `hostPath`, `address`, `username`; optional: `-p/--password`, `--password-file`, `--seal`| password prompt, `uid=0`, `gid=0`, `file_mode=0660`, `dir_mode=0770`, `--seal=true`| Creates a managed host SMB/CIFS mount, stores credentials under `/etc/terrarium/mounts`, writes a managed `/etc/fstab` block, and mounts it immediately. |
204
243
|`terrariumctl mount remove`| required: `hostPath`| n/a | Unmounts a Terrarium-managed host mount, removes its managed `/etc/fstab` block, and deletes its managed credentials file. |
@@ -410,7 +449,8 @@ Rules:
410
449
-`udp://hostport:containerport` exposes a raw UDP port through Traefik.
411
450
- Dynamic TCP/UDP host ports are also opened and closed in UFW automatically by the sync job.
412
451
- Auth-protected published routes are backed by host-side `oauth2-proxy` instances managed automatically by `terrariumctl proxy sync`.
413
-
- If the container does not have a global IPv4 address yet, the route is skipped until it does.
452
+
-`terrariumctl proxy sync` also reconciles host-loopback LXD `proxy` devices for published container backends and points Traefik at those localhost targets.
453
+
- If a backend proxy device cannot be reconciled, the sync fails without publishing a partially broken Traefik config.
0 commit comments