Skip to content

Blueprints

A Blueprint is a reusable automation template that defines a task list, optional Params, and optional Profiles to apply to machines selected by a Trigger. Blueprints are the "what" of automated workflows — they describe the work to do. Triggers are the "when" — they select which machines the Blueprint runs on.

Note

Blueprints do not have a Filter field. Machine selection is always done by the Trigger. A Blueprint simply declares what to do; a Trigger decides which machines do it.


What is a Blueprint?

A Blueprint object contains:

Field Purpose
Name Unique identifier
Tasks Ordered list of task names to apply to each WorkOrder
Params Key/value Params to set on the machine before tasks run
Profiles Profiles to add to the machine before tasks run
Description Human-readable description

When a Trigger fires and creates WorkOrders, each WorkOrder machine gets the Blueprint's Profiles and Params applied, then the task list queued.


Step-by-Step: Building a Blueprint

1. Identify the tasks

List the tasks that should run, in order. Tasks must already exist in DRP (as Task objects).

Bash
drpcli tasks list | jq '.[].Name'

2. Identify any Params or Profiles to inject

Determine if the blueprint needs to preset any Params or add Profiles before tasks run.

3. Create the Blueprint

Minimal blueprint (tasks only):

Bash
drpcli blueprints create '{
    "Name": "install-agent",
    "Tasks": ["setup-network", "install-drp-agent", "register-machine"],
    "Description": "Install the DRP agent on a newly discovered machine"
}'

Blueprint with Params:

Bash
drpcli blueprints create '{
    "Name": "install-agent-prod",
    "Tasks": ["setup-network", "install-drp-agent", "register-machine"],
    "Params": {
        "agent/environment": "production",
        "agent/log-level": "info"
    },
    "Description": "Install agent with production settings"
}'

Blueprint with Profiles:

Bash
drpcli blueprints create '{
    "Name": "install-agent-gpu",
    "Tasks": ["setup-network", "install-drp-agent", "install-gpu-drivers", "register-machine"],
    "Profiles": ["gpu-node-profile"],
    "Description": "Install agent on GPU nodes"
}'

4. Reference the blueprint from a trigger

Bash
drpcli triggers create '{
    "Name": "auto-install-agent",
    "Filter": "WorkOrderMode=true Runnable=true Params.needs-agent=true",
    "Blueprint": "install-agent",
    "AllInFilter": true,
    "Enabled": true
}'

Common Patterns

Pattern 1: Task list only

Use when tasks are self-contained and read all needed configuration from Params already on the machine:

JSON
{
    "Name": "simple-configure",
    "Tasks": ["validate-hardware", "configure-bios", "set-hostname"]
}

Pattern 2: Blueprint with Params

Use when the blueprint needs to inject configuration that isn't already on the machine:

JSON
{
    "Name": "configure-for-k8s",
    "Tasks": ["configure-networking", "install-containerd", "join-cluster"],
    "Params": {
        "k8s/cluster-endpoint": "https://k8s-api.example.com:6443",
        "k8s/role": "worker"
    }
}

Pattern 3: Blueprint with Profiles

Use when there is an existing Profile that encapsulates a set of Params. Applying the Profile is equivalent to applying all its Params:

JSON
{
    "Name": "configure-edge-node",
    "Tasks": ["configure-networking", "install-edge-runtime"],
    "Profiles": ["edge-node-base", "region-us-west"]
}

Relationship to Triggers and Work Orders

Text Only
Trigger (when + who)
    Filter: Params.needs-agent=true WorkOrderMode=true
    Blueprint: install-agent          ← references this Blueprint
    AllInFilter: true
        ↓ fires
WorkOrder created for each matching machine
    Blueprint's Profiles applied to machine
    Blueprint's Params set on machine
    Blueprint's Tasks queued
        ↓
Tasks execute in order

The Blueprint is decoupled from the selection logic intentionally. The same Blueprint can be referenced by multiple Triggers with different Filters (e.g. one trigger for bare-metal, another for VMs).


Cross-references

  • Triggers — selects which machines the Blueprint runs on
  • Work Orders — the runtime objects created from Trigger + Blueprint
  • Tasks — individual automation units referenced by the Blueprint's task list