From 2fc1cd4b865be35336f3617d2a0f468f6e64b2e8 Mon Sep 17 00:00:00 2001 From: DeveloperDurp Date: Wed, 20 Dec 2023 09:13:14 -0600 Subject: [PATCH] update --- .gitignore | 5 +++ TERRAFORM.GITLAB.RKE/defaults.tf | 18 +++++++++ TERRAFORM.GITLAB.RKE/main.tf | 54 ++++++++++++++++----------- TERRAFORM.GITLAB.RKE/variables.tf | 48 ++++++++++++++++++++++++ TERRAFORM.GITLAB.RKE/variables.tfvars | 19 ++++++++++ 5 files changed, 123 insertions(+), 21 deletions(-) create mode 100644 .gitignore create mode 100644 TERRAFORM.GITLAB.RKE/defaults.tf create mode 100644 TERRAFORM.GITLAB.RKE/variables.tf create mode 100644 TERRAFORM.GITLAB.RKE/variables.tfvars diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a76edb --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.terraform* +.env +*.tfstate* +local.tfvars + diff --git a/TERRAFORM.GITLAB.RKE/defaults.tf b/TERRAFORM.GITLAB.RKE/defaults.tf new file mode 100644 index 0000000..a53c497 --- /dev/null +++ b/TERRAFORM.GITLAB.RKE/defaults.tf @@ -0,0 +1,18 @@ +terraform { +# backend "http" {} + required_providers { + proxmox = { + source = "TheGameProfi/proxmox" + version = "2.9.15" + } + } +} + +provider "proxmox" { + pm_parallel = 3 + pm_tls_insecure = false + pm_api_url = var.pm_api_url + pm_api_token_id = var.pm_api_token_id + pm_api_token_secret = var.pm_api_token_secret + pm_debug = false +} diff --git a/TERRAFORM.GITLAB.RKE/main.tf b/TERRAFORM.GITLAB.RKE/main.tf index 4c7aa36..c789617 100644 --- a/TERRAFORM.GITLAB.RKE/main.tf +++ b/TERRAFORM.GITLAB.RKE/main.tf @@ -1,23 +1,35 @@ -module "RKE" { - source = "git::https://gitlab.com/developerdurp/tf-modules.git//TERRAFORM.PROXMOX.RKE" - - dnsserver = "#{dnsserver}" - sshkeys = "#{sshkeys}" - vlan = #{vlan} - bridge = "#{bridge}" - appname = "#{appname}" - searchdomain = "#{searchdomain}" - - master = { - count = #{mastercount} - template = "#{master-template}" - cores = #{mastercores} - memory = "#{mastermemory}" - node = #{masternode} - ip = #{masterip} +resource "proxmox_vm_qemu" "master" { + count = var.master.count + ciuser = "administrator" + vmid = "${var.vlan}${var.master.ip[count.index]}" + name = "rke-m-${var.appname}${format("%02d", count.index + 1)}" + target_node = var.master.node[count.index] + clone = var.master.template + qemu_os = "other" + full_clone = true + agent = 1 + cores = var.master.cores + sockets = 1 + cpu = "host" + memory = var.master.memory + scsihw = "virtio-scsi-pci" + bootdisk = "scsi0" + boot = "c" + onboot = false + network { + model = "virtio" + bridge = var.bridge + tag = var.vlan + firewall = false } - - pm_api_url = "#{pm_api_url}" - pm_api_token_id = "#{pm_api_token_id}" - pm_api_token_secret = "#{pm_api_token_secret}" + lifecycle { + ignore_changes = [ + network, + ] + } + #Cloud Init Settings + ipconfig0 = "ip=192.168.${var.vlan}.${var.master.ip[count.index]}/24,gw=192.168.${var.vlan}.1" + searchdomain = var.searchdomain + nameserver = var.dnsserver + sshkeys = var.sshkeys } diff --git a/TERRAFORM.GITLAB.RKE/variables.tf b/TERRAFORM.GITLAB.RKE/variables.tf new file mode 100644 index 0000000..45a62fe --- /dev/null +++ b/TERRAFORM.GITLAB.RKE/variables.tf @@ -0,0 +1,48 @@ +variable "dnsserver" { + type = string +} + +variable "sshkeys" { + type = string +} + +variable "vlan" { + type = number +} + +variable "bridge" { + type = string +} + +variable "appname" { + type = string +} + +variable "searchdomain" { + type = string +} + +variable "pm_api_url" { + type = string +} + +variable "pm_api_token_id" { + type = string +} + +variable "pm_api_token_secret" { + type = string +} + +variable "master" { + description = "Defaults of master nodes in K3S" + type = object({ + count = number + template = string + cores = number + memory = number + node = list(string) + ip = list(number) + }) +} + diff --git a/TERRAFORM.GITLAB.RKE/variables.tfvars b/TERRAFORM.GITLAB.RKE/variables.tfvars new file mode 100644 index 0000000..7816d0f --- /dev/null +++ b/TERRAFORM.GITLAB.RKE/variables.tfvars @@ -0,0 +1,19 @@ +dnsserver = "#{dnsserver}" +sshkeys = "#{sshkeys}" +vlan = #{vlan} +bridge = "#{bridge}" +appname = "#{appname}" +searchdomain = "#{searchdomain}" + +master = { + count = #{count} + template = "#{template}" + cores = #{cores} + memory = "#{memory}" + node = [#{node}] + ip = [#{ip}] +} + +pm_api_url = "#{pm_api_url}" +pm_api_token_id = "#{pm_api_token_id}" +pm_api_token_secret = "#{pm_api_token_secret}"