Skip to content

UDS Runner

UDS CLI contains vendors and configures the maru-runner build tool to make compiling and building UDS bundles simple.

To run a task from a tasks.yaml:

Terminal window
uds run <task-name>
Terminal window
uds run -f <path/to/tasks.yaml> <task-name>

The Maru docs describe how to build tasks.yaml files to configure the runner. The functionality in UDS CLI is mostly identical with the following exceptions

When running a tasks.yaml with uds run my-task you can set variables using environment prefixed with UDS_

For example, running UDS_FOO=bar uds run echo-foo on the following task will echo bar.

variables:
- name: FOO
default: foo
tasks:
- name: echo-foo
actions:
- cmd: echo ${FOO}

To run uds commands from within a task, you can invoke your system uds binary using the ./uds syntax. Similarly, UDS CLI vendors Zarf, and tasks can run vendored Zarf commands using ./zarf. For example:

tasks:
- name: default
actions:
- cmd: ./uds inspect k3d-core-istio-dev:0.16.1 # uses system uds
- cmd: ./zarf tools kubectl get pods -A # uses vendored Zarf

When running tasks with uds run, there is a special UDS_ARCH environment variable accessible within tasks that is automatically set to your system architecture, but is also configurable with a UDS_ARCHITECTURE environmental variable. For example:

tasks:
- name: print-arch
actions:
- cmd: echo ${UDS_ARCH}
  • Running uds run print-arch will echo your local system architecture
  • Running UDS_ARCHITECTURE=amd64 uds run print-arch will echo “amd64”

Since UDS CLI also vendors Zarf, there is no need to also have Zarf installed on your system.