Skip to content

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

Bash
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:

Bash
# 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.

Bash
# 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:

  1. Export Version Sets from the Manager: drpcli version_sets list > version-sets.json
  2. Commit to Git and review changes via pull/merge request.
  3. Apply updated Version Sets back to the Manager: drpcli version_sets uploadAll version-sets.json
  4. The Manager reconciles attached endpoints automatically when Apply is true.

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.