Storage Control Plane & Terraform Provider

Live

An IBM Cloud VPC Storage-inspired control panel for volumes, file shares, snapshots, and automated backup policies — plus a real Terraform provider.

Overview

A control panel for a business's own Inaya storage, inspired by IBM Cloud's VPC storage product line: volumes and file shares as a real, organized registry; genuine point-in-time snapshots; and automated, tag-driven backup policies. Open it from the Business Workspace's Storage Control Plane tab.

The one honest limit, stated plainly

IBM's "attachable hard drive" feature assumes a running virtual computer to plug it into. Inaya doesn't run virtual computers for customers, so a literal physical attach is not something this platform can build honestly. A volume (or fileShare) here is a real, taggable, resizable control-plane record backed by a real storage bucket, with a static physicalCapability field stating exactly this — it is never described as a physically attachable disk or a mountable NFS export.

What's real

  • Storage resources. Create a volume or file share, tag it, resize it (capacity only ever increases — a decrease is rejected, never silently ignored).
  • Attach/detach. A real reservation/lock mechanism preventing two declared consumers from believing they own the same volume at once.
  • Snapshots. Genuinely incremental at capture time (references existing object versions, no bytes copied), with an independently recomputable integrity hash. Restorable, copyable to a different resource, and shareable with another organization on a revocable, expiring grant. Consistency groups honestly disclose a sequential — not atomic — capture boundary.
  • Automated backup policies. Select resources by tag, add a daily/weekly/monthly/long-term plan with a retention count, and Inaya's own hourly cron sweep runs due plans and enforces retention automatically — every deletion audited, never silent.

terraform-provider-inaya

A real Go-based Terraform provider (terraform-plugin-framework), authenticated with an org API key against a bearer-token /api/public/v1/storage/* route namespace (see the API Reference).

hcl
terraform {
  required_providers {
    inaya = { source = "talhawaqas/inaya" }
  }
}

provider "inaya" {
  endpoint = "https://app.inaya.network"
  api_key  = var.inaya_api_key
}

resource "inaya_storage_resource" "app_data" {
  type        = "volume"
  name        = "app-data"
  capacity_gb = 100
}

Resources: inaya_storage_resource, inaya_snapshot, inaya_backup_policy, inaya_backup_plan. Every attribute without a real backend update path (name, type, tags on a resource; a plan's frequency/retention) is RequiresReplace rather than silently no-opping a change the backend can't actually make.

Status: the provider's full create/read/update/delete cycle was tested against a real running deployment with real database state — not a dry run. It is not yet published to the Terraform Registry; build it locally from terraform-provider-inaya/ in this repository and point Terraform at the binary with a dev_overrides config in the meantime.

What's not built

Fast/accelerated restore (no backend primitive exists to make one honestly faster than a normal restore), real physical block-volume attach or real multi-client NFS mounting (structurally impossible without a compute layer Inaya doesn't have), and live interop validation against real IBM Cloud Object Storage (blocked on IBM Cloud account sign-up, not on anything left to build).

Last verified 2026-09-21