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