Files
kazan-terraform/main.tf
Kevin Midboe 20f90c129f Plan for spinning up 7 node kubernetes cluster; kazan!
- Defines controller & worker resources
- terraform.tfvars defines distinct nodes as a dictonary
- Output provides final vmid, name & template used
2023-01-02 23:50:14 +01:00

121 lines
2.4 KiB
HCL

terraform {
required_providers {
proxmox = {
source = "telmate/proxmox"
version = ">= 2.9.10"
}
google = {
source = "hashicorp/google"
version = "4.27.0"
}
}
backend "gcs" {
bucket = "schleppe-tfstate"
prefix = "kazan"
}
# backend "local" {}
}
resource "proxmox_vm_qemu" "k8s-kazan-controllers" {
for_each = var.k8s_controllers
name = each.value.name
target_node = each.value.target_node
vmid = each.value.vmid
desc = "Kazan kubernetes cluster controller node: ${each.value.name}"
sockets = 1
cores = each.value.vcpu
memory = each.value.memory
cpu = "host"
clone = "kazan-master-template"
full_clone = true
agent = 1
onboot = true
boot = "cdn"
bootdisk = "scsi0"
os_type = "cloud-init"
hotplug = "network,disk,usb"
ipconfig0 = "ip=${each.value.ip}${each.value.subnet},gw=${each.value.gw}"
nameserver = local.nameserver
searchdomain = local.searchdomain
sshkeys = <<-EOF
%{for key in local.public_ssh_keys~}
${key}
%{endfor~}
EOF
disk {
type = "scsi"
storage = "local-lvm"
size = each.value.disk_size
backup = 0
}
network {
model = "virtio"
bridge = "vmbr0"
firewall = false
link_down = false
}
vga {
memory = 0
type = "serial0"
}
}
resource "proxmox_vm_qemu" "k8s-kazan-workers" {
for_each = var.k8s_workers
name = each.value.name
target_node = each.value.target_node
vmid = each.value.vmid
desc = "Kazan kubernetes cluster worker node: ${each.value.name}"
sockets = 1
cores = each.value.vcpu
memory = each.value.memory
cpu = "host"
clone = "kazan-master-template"
full_clone = true
agent = 1
onboot = true
boot = "cdn"
bootdisk = "scsi0"
os_type = "cloud-init"
hotplug = "network,disk,usb"
ipconfig0 = "ip=${each.value.ip}${each.value.subnet},gw=${each.value.gw}"
nameserver = local.nameserver
searchdomain = local.searchdomain
sshkeys = <<-EOF
%{for key in local.public_ssh_keys~}
${key}
%{endfor~}
EOF
disk {
type = "scsi"
storage = "local-lvm"
size = each.value.disk_size
backup = 0
}
network {
model = "virtio"
bridge = "vmbr0"
firewall = false
link_down = false
}
vga {
type = "serial0"
}
}