Skip to content

Commit d970f1a

Browse files
committed
chore: cleanup variables
1 parent 6f470f1 commit d970f1a

4 files changed

Lines changed: 50 additions & 136 deletions

File tree

src/tf/outputs.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@ output "workload_vm_ids" {
99
output "workload_vm_ipv4" {
1010
description = "Declared IPv4 addresses for workload VMs"
1111
value = {
12-
for name, spec in var.workload_vms :
12+
for name, spec in local.workload_vms :
1313
name => spec.ipv4_address
1414
}
1515
}
1616

1717
output "ansible_hosts" {
1818
description = "Host map for Ansible inventory generation"
1919
value = {
20-
for name, spec in var.workload_vms :
20+
for name, spec in local.workload_vms :
2121
name => {
2222
ansible_host = spec.ipv4_address
23-
ansible_user = var.vm_user
23+
ansible_user = local.vm_user
2424
node_name = spec.node_name
2525
vm_id = spec.vm_id
2626
role = spec.role

src/tf/ssh_key_inventory.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
locals {
2+
vm_ssh_key_name = "infra-vm-workloads"
23
vm_ssh_key_version = 1
34
vm_ssh_private_key_ssm_path = "/vm-workloads/sgfdevs/infra-vm-workloads/ssh-private-key"
45
}
56

67
module "ssh_key" {
78
source = "git::https://github.com/glitchedmob/infra-shared.git//src/tf/modules/ssh-key?ref=main"
8-
name = var.vm_ssh_key_name
9+
name = local.vm_ssh_key_name
910
key_version = local.vm_ssh_key_version
1011
ssm_private_key_path = local.vm_ssh_private_key_ssm_path
1112
}
@@ -24,7 +25,7 @@ resource "ansible_group" "k3s_cluster" {
2425
}
2526

2627
resource "ansible_host" "workload" {
27-
for_each = var.workload_vms
28+
for_each = local.workload_vms
2829

2930
name = each.key
3031
groups = [
@@ -34,7 +35,7 @@ resource "ansible_host" "workload" {
3435

3536
variables = {
3637
ansible_host = each.value.ipv4_address
37-
ansible_user = var.vm_user
38+
ansible_user = local.vm_user
3839
node_name = each.value.node_name
3940
vm_id = tostring(each.value.vm_id)
4041
ssm_private_key_path = module.ssh_key.ssm_path

src/tf/variables.tf

Lines changed: 0 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -22,118 +22,3 @@ variable "aws_region" {
2222
type = string
2323
default = "us-east-2"
2424
}
25-
26-
variable "proxmox_pool_id" {
27-
description = "Proxmox pool for workload VMs"
28-
type = string
29-
default = "sgfdevs"
30-
}
31-
32-
variable "workload_vms" {
33-
description = "Workload VMs to provision"
34-
type = map(object({
35-
node_name = string
36-
vm_id = number
37-
ipv4_address = string
38-
role = string
39-
}))
40-
41-
default = {
42-
vm-workload-01 = {
43-
node_name = "x86-node-01"
44-
vm_id = 4201
45-
ipv4_address = "10.20.4.10"
46-
role = "server"
47-
}
48-
vm-workload-02 = {
49-
node_name = "x86-node-02"
50-
vm_id = 4202
51-
ipv4_address = "10.20.4.11"
52-
role = "agent"
53-
}
54-
}
55-
56-
validation {
57-
condition = length(var.workload_vms) == 2
58-
error_message = "Exactly two workload VMs must be defined."
59-
}
60-
61-
validation {
62-
condition = alltrue([
63-
for vm in values(var.workload_vms) : contains(["server", "agent"], vm.role)
64-
])
65-
error_message = "Each workload VM role must be either 'server' or 'agent'."
66-
}
67-
}
68-
69-
variable "sgfdevs_cidr" {
70-
description = "CIDR for sgfdevs workload network"
71-
type = string
72-
default = "10.20.4.0/22"
73-
}
74-
75-
variable "vm_user" {
76-
description = "Primary cloud-init username"
77-
type = string
78-
default = "ubuntu"
79-
}
80-
81-
variable "vm_additional_ssh_public_keys" {
82-
description = "Optional additional SSH public keys for cloud-init user"
83-
type = list(string)
84-
default = []
85-
}
86-
87-
variable "vm_ssh_key_name" {
88-
description = "Identifier for generated workload SSH key"
89-
type = string
90-
default = "infra-vm-workloads"
91-
}
92-
93-
variable "vm_cpu_cores" {
94-
description = "CPU cores per workload VM"
95-
type = number
96-
default = 4
97-
}
98-
99-
variable "vm_cpu_type" {
100-
description = "CPU model for workload VMs"
101-
type = string
102-
default = "x86-64-v2-AES"
103-
}
104-
105-
variable "vm_memory_mb" {
106-
description = "Memory in MB per workload VM"
107-
type = number
108-
default = 8192
109-
}
110-
111-
variable "vm_disk_size_gb" {
112-
description = "Root disk size in GB"
113-
type = number
114-
default = 80
115-
}
116-
117-
variable "vm_datastore_id" {
118-
description = "Proxmox datastore for root disks"
119-
type = string
120-
default = "vm-data"
121-
}
122-
123-
variable "vm_cloud_init_datastore_id" {
124-
description = "Datastore for cloud-init disk"
125-
type = string
126-
default = "vm-data"
127-
}
128-
129-
variable "vm_network_bridge" {
130-
description = "Bridge for VM network interface"
131-
type = string
132-
default = "vmbr0"
133-
}
134-
135-
variable "vm_vlan_id" {
136-
description = "VLAN ID for workload VM network"
137-
type = number
138-
default = 13
139-
}

src/tf/workload_vms.tf

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,49 @@
11
locals {
2-
sgfdevs_prefix = tonumber(split("/", var.sgfdevs_cidr)[1])
3-
sgfdevs_gateway = cidrhost(var.sgfdevs_cidr, 1)
2+
proxmox_pool_id = "sgfdevs"
3+
sgfdevs_cidr = "10.20.4.0/22"
4+
vm_user = "admin"
5+
vm_additional_ssh_public_keys = []
6+
vm_cpu_cores = 4
7+
vm_cpu_type = "x86-64-v2-AES"
8+
vm_memory_mb = 8192
9+
vm_disk_size_gb = 80
10+
vm_datastore_id = "vm-data"
11+
vm_cloud_init_datastore_id = "vm-data"
12+
vm_network_bridge = "sgfdevs"
13+
vm_vlan_id = 13
14+
15+
workload_vms = {
16+
vm-workload-01 = {
17+
node_name = "x86-node-01"
18+
vm_id = 4201
19+
ipv4_address = "10.20.4.10"
20+
role = "server"
21+
}
22+
vm-workload-02 = {
23+
node_name = "x86-node-02"
24+
vm_id = 4202
25+
ipv4_address = "10.20.4.11"
26+
role = "agent"
27+
}
28+
}
29+
30+
sgfdevs_prefix = tonumber(split("/", local.sgfdevs_cidr)[1])
31+
sgfdevs_gateway = cidrhost(local.sgfdevs_cidr, 1)
432
vm_template_file_ids = {
533
x86-node-01 = "x86-node-01:iso/debian-13-generic-amd64.qcow2"
634
x86-node-02 = "x86-node-02:iso/debian-13-generic-amd64.qcow2"
735
}
836
}
937

1038
resource "proxmox_virtual_environment_vm" "workload" {
11-
for_each = var.workload_vms
39+
for_each = local.workload_vms
1240

1341
name = each.key
1442
description = "Managed by OpenTofu for sgfdevs workload cluster"
1543
tags = ["managed-by-tofu", "sgfdevs", "k3s"]
1644
node_name = each.value.node_name
1745
vm_id = each.value.vm_id
18-
pool_id = var.proxmox_pool_id
46+
pool_id = local.proxmox_pool_id
1947

2048
started = true
2149
on_boot = true
@@ -25,32 +53,32 @@ resource "proxmox_virtual_environment_vm" "workload" {
2553
}
2654

2755
cpu {
28-
cores = var.vm_cpu_cores
29-
type = var.vm_cpu_type
56+
cores = local.vm_cpu_cores
57+
type = local.vm_cpu_type
3058
}
3159

3260
memory {
33-
dedicated = var.vm_memory_mb
34-
floating = var.vm_memory_mb
61+
dedicated = local.vm_memory_mb
62+
floating = local.vm_memory_mb
3563
}
3664

3765
disk {
38-
datastore_id = var.vm_datastore_id
66+
datastore_id = local.vm_datastore_id
3967
file_id = local.vm_template_file_ids[each.value.node_name]
4068
interface = "scsi0"
4169
iothread = true
4270
discard = "on"
43-
size = var.vm_disk_size_gb
71+
size = local.vm_disk_size_gb
4472
}
4573

4674
network_device {
47-
bridge = var.vm_network_bridge
75+
bridge = local.vm_network_bridge
4876
model = "virtio"
49-
vlan_id = var.vm_vlan_id
77+
vlan_id = local.vm_vlan_id
5078
}
5179

5280
initialization {
53-
datastore_id = var.vm_cloud_init_datastore_id
81+
datastore_id = local.vm_cloud_init_datastore_id
5482

5583
ip_config {
5684
ipv4 {
@@ -60,10 +88,10 @@ resource "proxmox_virtual_environment_vm" "workload" {
6088
}
6189

6290
user_account {
63-
username = var.vm_user
91+
username = local.vm_user
6492
keys = concat(
6593
[module.ssh_key.public_key],
66-
[for key in var.vm_additional_ssh_public_keys : trimspace(key)]
94+
[for key in local.vm_additional_ssh_public_keys : trimspace(key)]
6795
)
6896
}
6997
}

0 commit comments

Comments
 (0)