Files
infra/1-nixos-node/node.tf
Adrian Cowan c3f25d1bc5 Prepare for adding LattePanda IOTA based cluster hosts.
This required the option to configure the available CPU as nomad assumes that we should only allocate based on the base CPU frequency but the N150 reports 800Mhz base but has a boost frequency more than 4x higher at 3.6GHz which would leave the CPU under utilised, instead we allocate at 1.8GHz (x4 cores).
2025-10-15 23:38:11 +11:00

66 lines
1.5 KiB
HCL

terraform {
required_providers {
null = {
source = "hashicorp/null"
version = "3.2.1"
}
template = {
source = "hashicorp/template"
version = "2.2.0"
}
}
}
provider "template" {}
variable "nodes" {
description = "Map of nodes with host, password, bind interface, and host volumes"
type = map(object({
host = string
password = string
bind_interface = string
bootstrap = optional(bool, false) # Optional field for bootstrap nodes
cpu_total_compute = optional(number, null) # Optional field for CPU total compute
host_volumes = list(string)
}))
}
locals {
config_files = { for k, v in var.nodes :
k => templatefile("${path.module}/configuration.nix", {
hostname = v.host
bind_interface = v.bind_interface
bootstrap = v.bootstrap
cpu_total_compute = v.cpu_total_compute
host_volumes = v.host_volumes
})
}
}
resource "null_resource" "deploy_nixos" {
for_each = var.nodes
connection {
type = "ssh"
host = "${each.value.host}.lan"
user = "root"
password = each.value.password
}
provisioner "file" {
content = local.config_files[each.key]
destination = "/tmp/configuration.nix"
}
provisioner "remote-exec" {
inline = [
"mv /tmp/configuration.nix /etc/nixos/configuration.nix",
"nixos-rebuild switch --use-remote-sudo"
]
}
triggers = {
configuration_content = local.config_files[each.key]
}
}