Skip to content

qumulo_filesystem_baremetal (Resource)

Deploys a Qumulo cluster on bare metal nodes via SSH.

This resource provisions Qumulo software on bare metal servers and forms them into a cluster. Node SSH credentials are defined in the connection profile's nodes block.

Example Usage

terraform {
  required_providers {
    qumulo = {
      source  = "qumulo-terraform-registry.s3.us-east-1.amazonaws.com/qumulo/qumulo"
      version = "~> 1.0"
    }
  }
}

provider "qumulo" {
  connection_profiles = [
    {
      name     = "baremetal"
      endpoint = "https://10.0.1.10:8000"
      username = "admin"
      password = var.admin_password

      nodes = [
        {
          ip              = "10.0.1.10"
          ssh_private_key = file("~/.ssh/qumulo_key")
          # ssh_user     = "root"  # Optional: defaults to root
          # ssh_password = "..."   # Alternative to ssh_private_key
          # ssh_port     = 22      # Optional: defaults to 22
        },
        {
          ip              = "10.0.1.11"
          ssh_private_key = file("~/.ssh/qumulo_key")
          # ssh_user     = "root"  # Optional: defaults to root
          # ssh_password = "..."   # Alternative to ssh_private_key
          # ssh_port     = 22      # Optional: defaults to 22
        },
      ]
    },
  ]
}

resource "qumulo_filesystem_baremetal" "cluster" {
  connection_profile = "baremetal"

  cluster_name    = "prod"
  admin_password  = var.admin_password
  # cluster_version = "7.7.2"  # Optional: defaults to latest
}

Import

Existing bare metal clusters can be imported by connection profile name:

terraform import qumulo_filesystem_baremetal.cluster baremetal

Important: After import, cluster_name, admin_password, cluster_version, and the erasure-coding fields (blocks_per_stripe, max_drive_failures, max_node_failures) are not populated in state (the Qumulo REST API does not expose them). This causes a perpetual diff on every terraform plan. Add ignore_changes to suppress it:

resource "qumulo_filesystem_baremetal" "cluster" {
  connection_profile = "baremetal"
  cluster_name       = "prod"
  admin_password     = var.admin_password

  lifecycle {
    ignore_changes = [cluster_name, admin_password, cluster_version, blocks_per_stripe, max_drive_failures, max_node_failures]
  }
}

Schema

Required

NOTE: Write-only arguments are supported in Terraform 1.11 and later.

  • admin_password (String, Sensitive, Write-only) Administrator password for the cluster. To change the admin password after creation, use the Qumulo UI or REST API directly.
  • cluster_name (String) Name of the Qumulo cluster (2-15 alphanumeric characters). Cannot be changed after creation.
  • connection_profile (String) Name of a connection profile defined in the provider block.

For bare metal deployments, the connection profile must include a nodes block with SSH credentials for each server. The username and password fields are used for REST API access after the cluster is formed.

provider "qumulo" {
  connection_profiles = [
    {
      name     = "baremetal"
      endpoint = "https://10.0.1.10:8000"
      username = "admin"
      password = var.admin_password

      nodes = [
        {
          ip              = "10.0.1.10"
          ssh_private_key = file("~/.ssh/qumulo_key")
          # ssh_user     = "root"  # Optional: defaults to root
          # ssh_password = "..."   # Alternative to ssh_private_key
          # ssh_port     = 22      # Optional: defaults to 22
        },
        {
          ip              = "10.0.1.11"
          ssh_private_key = file("~/.ssh/qumulo_key")
          # ssh_user     = "root"  # Optional: defaults to root
          # ssh_password = "..."   # Alternative to ssh_private_key
          # ssh_port     = 22      # Optional: defaults to 22
        },
      ]
    },
  ]
}

Optional

  • blocks_per_stripe (Number) Erasure-coding stripe width. 0 lets the cluster choose automatically. Cannot be changed after creation.
  • cluster_version (String) Qumulo software version to install (e.g., '7.7.2'). If omitted, the latest available version is used. Cannot be changed after creation.
  • max_drive_failures (Number) Maximum tolerated simultaneous drive failures. 0 lets the cluster choose automatically. Cannot be changed after creation.
  • max_node_failures (Number) Maximum tolerated simultaneous node failures. 0 lets the cluster choose automatically. Cannot be changed after creation.

Read-Only

  • cluster_uuid (String) UUID assigned to the cluster by Qumulo.
  • endpoint (String) HTTPS management endpoint URL for the cluster.
  • id (String) Unique identifier for the resource (cluster UUID).
  • node_ips (List of String) IP addresses of all cluster nodes.