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).
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):
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:
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:
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¶
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:
{
"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:
{
"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:
{
"Name": "configure-edge-node",
"Tasks": ["configure-networking", "install-edge-runtime"],
"Profiles": ["edge-node-base", "region-us-west"]
}
Relationship to Triggers and Work Orders¶
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