--- paths: - "notes/operations-center-guide.md" - "incusos/incusos-proxmox" - "incusos/examples/*oc*" --- # Operations Center ## Basics - **CLI**: `operations-center` (from GitHub releases or `github.com/FuturFusion/operations-center`). - **Config**: `~/.config/operations-center/` (copy certs from `~/.config/incus/`). - **Port**: 8443. Browser needs PKCS#12 client cert (`client.pfx`). Web UI at `/ui/`. - **v0.3.0** (active dev). Use `--version` to check. - **No `remote:` suffix**: requires `operations-center remote switch NAME`. ## Provisioning workflow - **No brownfield**: nodes must boot from OC-provisioned ISO. - **Token seeds**: `provisioning token seed add/get-image`. No `force_reboot` for Proxmox. ```bash operations-center provisioning token seed add proxmox-preseed \ /tmp/preseed.yaml --description "No force_reboot for Proxmox" operations-center provisioning token seed get-image proxmox-preseed \ /tmp/IncusOS-oc.iso --type iso --architecture x86_64 --channel old-stable ``` - **Hybrid deploy** (recommended): `incusos-proxmox --iso /tmp/IncusOS-oc.iso --yes lab-oc-nodes.yaml` - **Self-registration**: nodes register with OC in ~30s after first boot. ## needs_update blocker (critical) - OC requires `needs_update: false` for `provisioning cluster add`. - Nodes from latest ISO are `needs_update: true` (never went through OC pipeline). - **Fix**: use `--channel old-stable` for ISO. OC pushes update, clears flag. ## Cluster formation ```bash echo '{}' > /tmp/oc-app-config.yaml operations-center provisioning cluster add oc-cluster \ https://:8443 \ --server-names oc-node-01,oc-node-02,oc-node-03 \ --server-type incus \ --application-seed-config /tmp/oc-app-config.yaml ``` - Use `apply_defaults: false` for OC nodes (recommended). - Empty `{}` app config if cert already in trust store from SEED_DATA. ## Tested limitations - Inventory NOT real-time -- requires `cluster resync` - OC reboot breaks OC-managed Proxmox nodes (daemon crash from invalid state.txt) - Fix: destroy and redeploy. Proxmox stop/start is safe. - No cluster member state tracking (always shows `ready`) - Stale entries from out-of-band changes persist - Server removal blocked if part of OC cluster - `needs_update` is pipeline-based, not version-based - OVN LB has no health checks ## ISO upload skip bug (fixed) - `--iso` now deletes existing ISO before re-upload (prevents stale reuse).