emerson@netdevops:~/netbox-openbao$ diagram proxbox-openbao --vms --secrets
Proxmox VM & container secrets
How netbox-proxbox inventory sync and netbox-openbao secret storage work together — without mixing credentials into the sync pipeline.
netbox-proxbox keeps Proxmox QEMU VMs and LXC containers modeled in NetBox — clusters, nodes, interfaces, addresses, and optional ssh service metadata. That sync path is read-only against Proxmox and never carries login passwords or private keys.
netbox-openbao attaches SSH credentials to the same VirtualMachine and virtualization.VM objects after they exist. Secret material lives only in OpenBao KV v2; NetBox holds usernames, fingerprints, assignments, and audit — the same split as devices elsewhere in the estate.
The two plugins do not call each other directly. They meet on shared NetBox objects: proxbox creates the VM row and network context; openbao binds credentials to that row (and to an ipam.Service when services are modeled).
›overview
design principles
- ├─Inventory sync and secret storage are separate lanes — a proxbox job failure must not rotate or leak credentials, and a reveal must not trigger a Proxmox API call.
- ├─Proxbox never writes to OpenBao; netbox-openbao never queries the Proxmox API for VM discovery.
- ├─Quick-add SSH on a VM page is the usual handoff: proxbox supplies the object; the operator (or automation with NetBox RBAC) stores the login material in one atomic transaction.
- ├─Broker mode keeps AppRole material on netbox-openbao-broker; netbox-rpc catalogs audited host procedures that resolve credentials through the same openbao reveal contract.
›inventory sync
Lane 1 — inventory sync (no secrets) — hover any node for details
no passwords · no keys · no tokens
›credential write
Lane 2 — store SSH credential on the VM — Quick-add or API after the object exists
›reveal & access
Lane 3 — reveal and SSH access — Material leaves only through audited POST reveal
›security stack
OpenBao, broker, and RPC stack — Open-source secret storage and audited host access
›what stays out of proxbox sync
Proxmox guest credentials — cloud-init passwords, QEMU agent secrets, LXC root passwords stored on the hypervisor — are not part of the proxbox discovery contract. Even when proxbox creates or updates an ipam.Service named ssh with tcp/22, that row describes reachability, not the login secret.
Storing the SSH login belongs to netbox-openbao (or another credential workflow) after the VM exists in NetBox. Automation should resolve material through POST /api/plugins/openbao/credentials/{id}/reveal/ with reveal_credential permission, not by scraping Proxmox config or expecting sync payloads to include secrets.
›typical operator sequence
- Run proxbox sync (manual, scheduled, or via proxbox-api) so the VM or container appears under the correct cluster and node with interfaces and IPs.
- Open the VirtualMachine in NetBox and use Add SSH access (quick-add) to create the ipam.Service (when modeled), Credential, and CredentialAssignment in one transaction.
- Optional: confirm the public key or username metadata on the credential row; material remains write-only on GET.
- Operators or nbx automation POST reveal when they need the password or private key for SSH — audited, Cache-Control: no-store, separate from inventory export.