Skip to Content

Provisioner Definitions

A provisioner definition is a YAML file that describes how a storage provisioner operates: which driver to use, how to connect to the storage backend, and which groups have access. Provisioner definitions are applied with fuzzball volume provisioner add.

Definition format

Provisioner definitions use a name-keyed format where the provisioner name is the top-level key:

my-provisioner: description: "Shared NFS storage for development" driver: type: nfs target: "nfs-server:/export/data" access: all ephemeral: all

The provisioner name (my-provisioner above) is set by the top-level key in the YAML file. It is also passed as the first argument to fuzzball volume provisioner add.

Field reference

Top-level fields

FieldTypeRequiredDescription
descriptionstringNoHuman-readable description of the provisioner
driverobjectYesStorage driver configuration (see below)
annotationsmapNoKey-value pairs for provisioner selection matching
accesspolicyNoGroups allowed to mount existing persistent volumes
createpolicyNoGroups allowed to create persistent volumes
ephemeralpolicyNoGroups allowed to create and use ephemeral volumes
costPerGbHourfloatNoBilling rate for ephemeral volume usage

Driver configuration

The driver section configures the storage backend. All driver types share the type field; remaining fields depend on the driver type.

FieldTypeDriversDescription
typestringAllDriver type: nfs, hostpath, or efs
targetstringNFSNFS server and export in host:/path format
versionintegerNFSNFS protocol version: 3 or 4 (omit for auto-negotiate)
optionsstringNFSAdditional mount options (e.g., hard,intr)
pathstringHostpathAbsolute path to the base directory on the node
localbooleanHostpathSet to true for node-local volumes (default: false)
filesystemIdstringEFSAWS EFS filesystem ID for BYO mode (e.g., fs-12345678)
regionstringEFSAWS region (e.g., us-west-2)
subnetIdslistEFSAWS subnet IDs for self-provisioned mode (mount target placement)
Note

For EFS provisioners, provide either filesystemId (BYO mode — use an existing EFS filesystem) or subnetIds (self-provisioned mode — Fuzzball creates the filesystem and mount targets automatically). Do not provide both at creation time.

Access policy format

Each of the three policy fields (access, create, ephemeral) accepts one of two forms:

Grant to all groups:

access: all

Grant to specific groups:

access: - engineering - datascience - research

Policies that are omitted or empty grant no access (default-deny). See Access Policies for details on the three-tier permission model.

Annotations

Annotations are string key-value pairs used for provisioner selection in workflow volume definitions. When a workflow specifies annotations: on a volume, Fuzzball matches those annotations against provisioner annotations to select the right provisioner.

my-provisioner: driver: type: nfs target: "nfs-server:/export/fast" annotations: tier: fast region: us-west access: all

See Annotations and Selection for details on how matching works.

Complete examples

NFS provisioner

An NFS provisioner for a multi-node on-prem cluster with per-group access control:

shared-nfs: description: "Shared NFS storage for all teams" driver: type: nfs target: "nfs-server.prod.internal:/vol/shared" options: "hard,intr" access: all create: - data-engineers - mlops ephemeral: all annotations: tier: shared

Hostpath provisioner

A hostpath provisioner for a single-node deployment or a node with a shared clustered filesystem (Lustre, GPFS):

lustre-storage: description: "Lustre shared filesystem" driver: type: hostpath path: /mnt/lustre/fuzzball access: all create: - storage-admins ephemeral: all

Node-local hostpath provisioner

A hostpath provisioner for node-local NVMe scratch storage. Volumes created with this provisioner exist only on the node where they were created:

local-nvme: description: "Local NVMe scratch storage" driver: type: hostpath path: /mnt/nvme0n1 local: true ephemeral: - compute-jobs - batch-workers
Note

When local: true is set, volumes are only accessible on the node where they were created. Fuzzball's scheduler ensures jobs using these volumes are placed on the correct node.

AWS EFS provisioner (BYO mode)

A provisioner for an existing AWS EFS filesystem:

aws-efs: description: "AWS EFS shared cloud storage" driver: type: efs filesystemId: fs-12345678 region: us-west-2 access: all create: - engineering ephemeral: all

AWS EFS provisioner (self-provisioned mode)

A provisioner where Fuzzball creates the EFS filesystem and mount targets:

aws-efs-auto: description: "Auto-provisioned AWS EFS" driver: type: efs region: us-west-2 subnetIds: - subnet-abc123 - subnet-def456 access: all create: - engineering ephemeral: all
Note

The EFS driver creates AWS EFS access points for each volume. Volume creation and deletion are control-plane operations that do not require a substrate node.

Editing an existing provisioner

To modify an existing provisioner's definition, use fuzzball volume provisioner edit:

$ fuzzball volume provisioner edit my-provisioner

This opens the current definition in your $EDITOR. Save and close to apply the changes. You can also export the current definition to a file, modify it, and re-apply:

$ fuzzball volume provisioner info my-provisioner -o yaml > provisioner.yaml $ vi provisioner.yaml $ fuzzball volume provisioner edit my-provisioner -f provisioner.yaml