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:
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.