Skip to content

Edge Bare Metal Basic Example

Deploys a single-node Qumulo edge cluster on a bare metal server via SSH.

Edge vs Standard Bare Metal

Use qumulo_filesystem_edge_baremetal for single-node deployments. For multi-node clusters with erasure-coding protection, use qumulo_filesystem_baremetal.

Prerequisites

  • 1 bare metal server running Ubuntu, Debian, RHEL, Rocky Linux, or CentOS
  • SSH access to the node (key or password auth)
  • Node must have internet access to download Qumulo packages from S3
  • Port 8000 open for REST API communication

Usage

  1. Edit main.tf with your values (see the Full Configuration below):
  2. Replace the node IP with your server address
  3. Optionally set cluster_version to pin a specific version (defaults to latest)
  4. Adjust ssh_private_key_path if your key is not at ~/.ssh/id_rsa
  5. Run:
terraform init -upgrade
terraform plan -var="admin_password=YourSecurePassword123"
terraform apply -var="admin_password=YourSecurePassword123"

What It Does

  1. SSHes into the node and installs Qumulo Core
  2. Waits for the REST API to become available
  3. Creates an unprotected edge cluster on the single node
  4. Waits for the cluster to reach ACTIVE state
  5. Stores the cluster UUID and endpoint in Terraform state

Notes

  • All configuration fields are immutable after creation (cluster_name, cluster_version, etc.)
  • Deleting the resource only removes it from Terraform state; the cluster keeps running
  • If terraform apply is interrupted, re-running it is safe (idempotent)
  • Import an existing cluster: terraform import qumulo_filesystem_edge_baremetal.cluster edge

Full Configuration

# Example: Basic Edge Bare Metal Qumulo Cluster
# This example shows the minimal configuration for deploying a single-node
# Qumulo edge cluster on a bare metal server via SSH. No cloud credentials needed.
# Edit the values below, then run: terraform init -upgrade && terraform apply

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

variable "admin_password" {
  description = "Administrator password for the Qumulo cluster (min 8 characters)"
  type        = string
  sensitive   = true
}

variable "ssh_private_key_path" {
  description = "Path to SSH private key file for node access"
  type        = string
  default     = "~/.ssh/id_rsa"
}

provider "qumulo" {
  connection_profiles = [
    {
      name                 = "edge"
      endpoint             = "https://10.0.1.10:8000" # <-- Replace: node IP, port 8000
      username             = "admin"
      password             = var.admin_password
      insecure_skip_verify = true # Self-signed certs on unclustered nodes

      nodes = [
        {
          ip              = "10.0.1.10" # <-- Replace: node IP
          ssh_private_key = file(var.ssh_private_key_path)
        },
      ]
    },
  ]
}

resource "qumulo_filesystem_edge_baremetal" "cluster" {
  connection_profile = "edge"

  cluster_name   = "edge01" # 2-15 alphanumeric characters
  admin_password = var.admin_password

  # cluster_version = "7.7.2"  # Optional: omit to use latest available version
}

output "cluster_uuid" {
  description = "UUID of the Qumulo cluster"
  value       = qumulo_filesystem_edge_baremetal.cluster.cluster_uuid
}

output "endpoint" {
  description = "HTTPS management endpoint"
  value       = qumulo_filesystem_edge_baremetal.cluster.endpoint
}

output "node_ips" {
  description = "IP address of the cluster node"
  value       = qumulo_filesystem_edge_baremetal.cluster.node_ips
}