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).
66 lines
1.5 KiB
HCL
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]
|
|
}
|
|
}
|