Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.rafftechnologies.com/llms.txt

Use this file to discover all available pages before exploring further.

Updated May 10, 2026 Manages a Raff block storage volume — NVMe SSD, sized in GB, region-pinned, attached to one VM at a time. Volumes can be created standalone and attached later, or attached at create time.

Example — minimal

resource "raff_volume" "data" {
  name        = "data-01"
  size        = 100
  volume_type = "nvme"
  region      = "us-east"
}

Example — attached to a VM

resource "raff_volume" "data" {
  name            = "data-01"
  size            = 250
  volume_type     = "nvme"
  region          = "us-east"
  filesystem_type = "ext4"        # only used on first attach
  vm_id           = raff_vm.api.id
}

Argument reference

Required

ArgumentTypeDescription
namestringVolume display name. Updates rename in place
sizeintSize in GB. Updates trigger an in-place resize (must be larger than current — volumes cannot shrink)
volume_typestringStorage class. Currently nvme

Optional

ArgumentTypeDescription
regionstringRegion. Defaults to the project’s default region. ForceNew
filesystem_typestringFilesystem laid down on first attach (Linux only) — ext4, xfs, or btrfs. Defaults to ext4. ForceNew
vm_idstring (UUID)VM to attach the volume to. Updating triggers detach-then-reattach (volume and VM must be in the same region)

Attribute reference (computed)

AttributeDescription
idVolume ID
statusLifecycle state
price_per_hourHourly price in USD
account_idOwning account UUID
project_idOwning project UUID
created_at / updated_atRFC3339 timestamps

Lifecycle

OperationBehavior
terraform apply (create)Creates volume, optionally attaches to vm_id
Change nameIn-place rename
Change sizeIn-place resize — must grow, never shrink
Change vm_idIn-place detach (from old) then attach (to new)
Change region, volume_type, filesystem_typeReplacement — destroy + recreate
terraform destroyDeletes the volume. Detach the VM first if still attached

Importing existing volumes

terraform import raff_volume.data <volume-id>

Permissions

The API key needs volume.create, volume.manage, and volume.delete in the project. The system role Project Admin grants all of these.

Data sources

# Single volume by ID
data "raff_volume" "data" {
  id = 42
}

# All volumes in the current project
data "raff_volumes" "all" {}

output "volume_count" {
  value = length(data.raff_volumes.all.volumes)
}

raff_vm

Compute resource volumes attach to.

raff_snapshot

Point-in-time volume snapshots.

CLI: raff volume

Imperative equivalent.
Last modified on May 11, 2026