aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclyhtsuriva <aimeric@adjutor.xyz>2025-02-26 21:10:34 +0100
committerclyhtsuriva <aimeric@adjutor.xyz>2025-02-26 21:10:34 +0100
commitb95a4b78b4a4ede6190e8de3f024296894c07f8f (patch)
tree3b517b527f15b38588007073b8bfe15ed361cebe
parent1e1a8a1f3f4a8586072d3e31d2bef9c27786d448 (diff)
opentofu: add k3s nodes
ansible to acutally install k3s w.i.p.
-rw-r--r--opentofu/main.tf105
-rw-r--r--opentofu/terraform.tfvars1
-rw-r--r--opentofu/variables.tf4
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