terraform apply. The provider talks to the same public API as the dashboard and the CLI; the difference is the workflow: declarative state instead of imperative commands.
For one-off operations and shell-driven workflows, use the CLI. For everything that should be reproducible and code-reviewable — production VMs, project structure, customer multi-tenancy — use Terraform.
View on Terraform Registry
registry.terraform.io/providers/RaffTechnologies/raff/latest — auto-generated schema docs for every resource and data source, plus version history.
Resources
Compute
| Resource | What it manages |
|---|---|
raff_vm | A virtual machine — OS template, plan, networking, backup schedule, tags |
raff_volume | A block storage volume (NVMe SSD), attachable to a VM |
raff_snapshot | Point-in-time snapshot of a VM disk or volume |
raff_backup | One-shot VM backup |
raff_backup_schedule | Recurring backup policy with retention |
Networking
| Resource | What it manages |
|---|---|
raff_vpc | Virtual private cloud — RFC 1918 / RFC 6598, /16–/28 |
raff_ip | Reserved floating IP (IPv4 or IPv6) |
raff_security_group | Firewall ruleset attached to VM NICs |
Team & access control
| Resource | What it manages |
|---|---|
raff_project | A project — the access-control container |
raff_member | Account-level member (invite by email or add an existing user / API key) |
raff_project_member | Project-scoped member |
raff_role | Custom IAM role with a permission set |
raff_ssh_key | Registered SSH public key |
raff_api_key | API key (secret returned once at create — lock down state) |
Data sources
Every resource has a singular (by ID) and plural (list) data source — see the Data sources section at the bottom of each resource page. Catalog/lookup data sources (regions, OS templates, pricing) live on the Catalog data sources page.Quick start
Authentication
The provider takes an API key via either theapi_key block argument or the RAFF_API_KEY environment variable. Same precedence as the CLI: block argument > env var.
Provider configuration block
| Argument | Required | Description |
|---|---|---|
api_key | Yes (or RAFF_API_KEY env) | API key with the role you want Terraform to use |
api_url | No | Override the API base URL — defaults to production |
project_id | No (or RAFF_PROJECT_ID env) | Default project for resources that don’t set project_id themselves |
What’s covered
The provider tracks the customer-facing public API. Every resource group exposed by the API has a Terraform resource and matching data sources today: compute, storage, networking, identity. Kubernetes and Object Storage are still rolling out at the API level and will land in the provider once those endpoints stabilize.Versioning and upgrades
The provider follows semantic versioning. Major-version bumps may include breaking changes to resource schemas; minor and patch versions are backward-compatible additions and bug fixes. Pin a specific version in yourrequired_providers block to control upgrades:
Where to go next
Install the provider
Registry installation, local development, and version pinning.
raff_vm
Manage Virtual Machines.
raff_volume
Block storage volumes.
raff_vpc
Private networks.
Catalog data sources
Regions, templates, pricing.
Terraform Registry
Auto-generated schema docs.
CLI
Imperative alternative for non-IaC workflows.