Version Sets¶
A Version Set is a DRP object that declares the desired state of a DRP endpoint: which version of
dr-provision to run, which version of the UX to deploy, which content packs and plugins to
install, which preferences to apply, which global profile parameters to set, and which files to
upload. Version Sets are the primary GitOps mechanism for managing DRP endpoint configuration at
scale through a Manager.
What a Version Set Contains¶
| Field | Description |
|---|---|
DRPVersion |
The DRP binary version to install (stable, tip, or a full version string) |
DRPUXVersion |
The UX version to deploy (stable, tip, or a full version string) |
Components |
List of content packs and plugins with their desired versions |
Plugins |
List of Plugin objects with their configuration (params, enabled state) |
Prefs |
Map of preference key → value to apply on the endpoint |
Global |
Map of global profile parameter key → value |
Files |
List of files to upload to the endpoint's file API, each with a source URL and optional Explode flag |
Apply |
When true, the Version Set is applied to all endpoints it is attached to |
Building a Version Set¶
Create a Version Set manually or by baselining an existing endpoint.
Manual Creation¶
drpcli version_sets create '{
"Id": "production-v4.10",
"DRPVersion": "v4.10.0",
"DRPUXVersion": "stable",
"Components": [
{"Name": "drp-community-content", "Version": "v4.10.0"}
],
"Prefs": {
"defaultBootEnv": "sledgehammer",
"unknownBootEnv": "ignore"
},
"Global": {
"dns/nameservers": "[\"8.8.8.8\"]"
},
"Apply": true
}'
Baselining an Endpoint¶
To capture the current state of an endpoint as a Version Set (baselining), use the Manager's baseline operation. This reads the running endpoint's DRP version, installed content packs, plugin configurations, preferences, and global parameters, and creates a Version Set that represents that snapshot:
# On the Manager endpoint
drpcli version_sets action Name:my-baseline baseline Endpoint:<endpoint-id>
Baselining is the recommended starting point for GitOps workflows — capture a known-good state, store it in version control, and use it as the source of truth for future deployments.
Applying a Version Set¶
When Apply is true on a Version Set that is attached to an endpoint, the Manager will
reconcile the endpoint toward the desired state declared in the Version Set. The Manager merges
multiple Version Sets using a defined precedence order — more specific sets override broader ones.
# Attach a Version Set to an endpoint
drpcli endpoints update Name:<endpoint-id> '{"VersionSets": ["production-v4.10"]}'
GitOps Workflows¶
Version Sets are plain JSON objects and integrate naturally with Git-based workflows:
- Export Version Sets from the Manager:
drpcli version_sets list > version-sets.json - Commit to Git and review changes via pull/merge request.
- Apply updated Version Sets back to the Manager:
drpcli version_sets uploadAll version-sets.json - The Manager reconciles attached endpoints automatically when
Applyistrue.
This pattern enables auditable, reviewable changes to the entire managed fleet with rollback capability (revert the Git commit and re-apply).
Version Set Triggers¶
Version Sets support triggers through the DRP event system. An event triggered by a Version Set
update (e.g., version_sets:update) can invoke an action on the Manager to immediately push the
new configuration to attached endpoints. Combine this with a webhook from your Git repository for
full GitOps automation: a merge to main triggers a webhook, the Manager receives the event, and
the fleet is reconciled within seconds.
Merging Version Sets¶
When multiple Version Sets are attached to an endpoint, they are merged in order. The Merge
operation (applied internally by the Manager) handles component, plugin, prefs, global, and file
entries — newer entries for the same key override older ones. The merged Apply flag is the AND
of all contributing sets: all sets must have Apply: true for the merged set to be applied.