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¶
- Edit
main.tfwith your values (see the Full Configuration below): - Replace the node IP with your server address
- Optionally set
cluster_versionto pin a specific version (defaults to latest) - Adjust
ssh_private_key_pathif your key is not at~/.ssh/id_rsa - Run:
terraform init -upgrade
terraform plan -var="admin_password=YourSecurePassword123"
terraform apply -var="admin_password=YourSecurePassword123"
What It Does¶
- SSHes into the node and installs Qumulo Core
- Waits for the REST API to become available
- Creates an unprotected edge cluster on the single node
- Waits for the cluster to reach ACTIVE state
- 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 applyis 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
}