diff options
author | clyhtsuriva <aimeric@adjutor.xyz> | 2025-02-26 21:10:34 +0100 |
---|---|---|
committer | clyhtsuriva <aimeric@adjutor.xyz> | 2025-02-26 21:10:34 +0100 |
commit | b95a4b78b4a4ede6190e8de3f024296894c07f8f (patch) | |
tree | 3b517b527f15b38588007073b8bfe15ed361cebe | |
parent | 1e1a8a1f3f4a8586072d3e31d2bef9c27786d448 (diff) |
opentofu: add k3s nodes
ansible to acutally install k3s w.i.p.
-rw-r--r-- | opentofu/main.tf | 105 | ||||
-rw-r--r-- | opentofu/terraform.tfvars | 1 | ||||
-rw-r--r-- | opentofu/variables.tf | 4 |
3 files changed, 110 insertions, 0 deletions
diff --git a/opentofu/main.tf b/opentofu/main.tf index ff9f945..1cbd21f 100644 --- a/opentofu/main.tf +++ b/opentofu/main.tf @@ -59,4 +59,109 @@ module "ansible_provision_docker_server" { ansible_playbook_path = var.docker_ansible_playbook_path depends_on = [proxmox_virtual_environment_vm.docker_server] } + +# Master Node (Control Plane) +resource "proxmox_virtual_environment_vm" "k3s_master" { + count = 1 + name = "k3s-master-${count.index}" + node_name = var.proxmox_node + tags = ["ubuntu", "k8s", "k3s_master"] + + clone { + vm_id = var.ubuntu_server_noble_packer_image_id + full = true + } + + agent { + enabled = true # Qemu Guest Agent + } + + cpu { + cores = 2 + sockets = 1 + type = "host" + } + + memory { + dedicated = 4096 + } + + disk { + interface = "virtio0" + datastore_id = "local-lvm" + size = 20 + discard = "on" + iothread = true + } + + network_device { + bridge = "vmbr0" + model = "virtio" + } + + initialization { + ip_config { + ipv4 { + address = "dhcp" + } + } + + user_account { + username = var.vm_username + keys = [var.ssh_public_key] + } + } +} + +# Worker Nodes +resource "proxmox_virtual_environment_vm" "k3s_worker" { + count = 2 + name = "k3s-worker-${count.index}" + node_name = var.proxmox_node + tags = ["debian", "k8s", "k3s_worker"] + + clone { + vm_id = var.debian_server_bookworm_packer_image_id + full = true + } + + agent { + enabled = true # Qemu Guest Agent + } + + cpu { + cores = 1 + sockets = 1 + type = "host" + } + + memory { + dedicated = 2048 + } + + disk { + interface = "virtio0" + datastore_id = "local-lvm" + size = 20 + discard = "on" + iothread = true + } + + network_device { + bridge = "vmbr0" + model = "virtio" + } + + initialization { + ip_config { + ipv4 { + address = "dhcp" + } + } + + user_account { + username = var.vm_username + keys = [var.ssh_public_key] + } + } } diff --git a/opentofu/terraform.tfvars b/opentofu/terraform.tfvars index 1fef5f5..f8094d4 100644 --- a/opentofu/terraform.tfvars +++ b/opentofu/terraform.tfvars @@ -2,6 +2,7 @@ proxmox_api_url = "https://10.0.0.5:8006/api2/json" proxmox_node = "pve" debian_server_bookworm_packer_image_name = "debian-server-bookworm-12-9-0-amd64" debian_server_bookworm_packer_image_id = "999" +ubuntu_server_noble_packer_image_id = "998" ubuntu_server_noble_packer_image_name = "ubuntu-server-noble-24-04-1-amd64" vm_username = "mas" ssh_private_key_path = "~/.ssh/id_ecdsa" diff --git a/opentofu/variables.tf b/opentofu/variables.tf index e679865..234963d 100644 --- a/opentofu/variables.tf +++ b/opentofu/variables.tf @@ -26,6 +26,10 @@ variable "ubuntu_server_noble_packer_image_name" { type = string } +variable "ubuntu_server_noble_packer_image_id" { + type = string +} + variable "vm_username" { description = "Username for SSH access to the VM" type = string |