diff --git a/main.tf b/main.tf index f6a23a7..757ef72 100644 --- a/main.tf +++ b/main.tf @@ -12,6 +12,14 @@ terraform { source = "mrparkers/keycloak" version = "4.3.1" } + proxmox = { + source = "telmate/proxmox" + version = "2.9.8" + } + guacamole = { + source = "techBeck03/guacamole" + version = "1.4.1" + } } backend "kubernetes" { secret_suffix = "tfstate" @@ -36,6 +44,19 @@ provider "keycloak" { url = "https://keycloak.${var.domain_suffix}" } +provider "guacamole" { + url = "https://guacamole.${var.domain_suffix}/guacamole" + token = var.guacamole_token + data_source = var.guacamole_datasource +} + +provider "proxmox" { + pm_api_url = var.proxmox_api_url + pm_api_token_id = var.proxmox_token_id + pm_api_token_secret = var.proxmox_token + pm_tls_insecure = true +} + resource "helm_release" "keycloak" { name = "keycloak" namespace = var.keycloak_namespace @@ -374,3 +395,60 @@ service: EOT ] } + +resource "proxmox_vm_qemu" "vyos_router" { + count = 3 + name = "vyos-${count.index + 1}" #count.index starts at 0, so + 1 means this VM will be named test-vm-1 in proxmox + target_node = var.proxmox_host + clone = var.vyos_template_name + agent = 1 + os_type = "cloud-init" + cores = 2 + sockets = 1 + cpu = "host" + memory = 2048 + scsihw = "virtio-scsi-single" + bootdisk = "scsi0" + disk { + slot = 0 + size = "10G" + type = "scsi" + storage = "NFS-BIG" + iothread = 1 + } + network { + model = "virtio" + bridge = "vmbr0" + } + network { + model = "virtio" + bridge = "TestNet1" + } + lifecycle { + ignore_changes = [ + network, + ] + } + ipconfig0 = "ip=172.29.7.6${count.index + 1}/24,gw=172.29.7.1" + sshkeys = < x } + name = each.value.name + parent_identifier = guacamole_connection_group.routers.identifier + parameters { + hostname = each.value.default_ipv4_address + username = "vyos" + private_key = var.ssh_private_key + } +} diff --git a/vars.tf b/vars.tf index f8acfbb..5d03007 100644 --- a/vars.tf +++ b/vars.tf @@ -41,3 +41,38 @@ variable "influxdb_namespace" { variable "grafana_namespace" { default = "grafana" } + +variable "keycloak_realm_display_name" { + default = "Dan's IOMDC Cloud" +} + +variable "proxmox_token_id" { + default = "dan@md1clv.im!terraform" +} + +variable "proxmox_api_url" { + default = "https://172.29.7.12:8006/api2/json" +} + +variable "guacamole_datasource" { + default = "mysql" +} + +variable "ssh_key" { + default = <<-EOT + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxtXWfJ2r6vEQ481lOGSmnb7yJHyDS8qq0/8KRPr98Yri0Tn200RR/XHMAR3wR/mACoaYFoi9DOE1tR0lyUf/qYEcPnN7pRfnF5afOM51YBxlZ1n5osZ70/C23xpqML4Ru6KaYvziysZ2lWe4iNJqOJXjJcOVRnFIA2iD/UIDLZAe/6GNlam4FKn6y5qZm/bCuaQlJsc3SnZIcEQ8yuhSZVOgugZxSXFXvhOt/88HKcrgDm9XA7QXQ9GcgpJ2ZDdIlwy+Iz3cT4HcjTPpmX5yf95FfKN4EATyH2QqTarWRae2L5L5uJXTVKFllQXBw3KFaUK5oXQV35LpgtM94+77IpPFl/u6JTs9tlrnO/dIe9LoXjPphUj0GMioi9IFyOtpon5aksIuEkRLVc8JhNrTcGGsbkSSvlC6ejq7HkM6d+RnwILYqhcfXx+GevVF9a2gidRGupoLzDOYPlqMldGQKNh4ZyfMTF1cbAcDnxFNbYBMEG/mPAktJ4iwaTQqTeMs= dan@linux.fritz.box + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDMA1vHkev3vcWnvtcg2VIzxUhNFx9BSKztnyJjXxJLbZs0h3dFB2hqilzKDNRjmt3R+Q1Ivdsis+UzUx4NywR0PYw1IWusLgoXGxV98GoYh9NV4DiqjOPpVqRs4iyUyl0VeMrqiWScllWD5aU+AAIQQp3Yclkprl0/6wxAt3nNTnMH0ksioItW4/6+KAl14Y+nfGlknJ4CEuaZ6sQ8Yw+SVZnxqkaJcy36R/DnF99uQVnAiyIQccmu18IKWUlJ6sgZ3VXL2SMjTk6DjLRkiV6KJua24bjhzEPWm3evutV6is3B0ziFAxvQghTFGIz5ZPH80MEd9LQ2w+uuPy0RFCizkwii308lsKs2/HAsK/gQvPkfApiojTO7XEhDWSPsNxR4OvuyRTno0TWQUtQRoSwk4+91+FhMwA4bdtzJRBdT0QhaXc+gB7nibk1T2/Biqj9dmulUotUdvrgwpBgs6wGsOvyLLyxCUDNYXNB9msayePMxO5AJ775y7ON6UbTDXAM= dan@guacamole.k8s.md1clv.im +EOT +} + +variable "proxmox_host" { + default = "px1" +} + +variable "template_name" { + default = "ubuntu-2204-cloudinit-template" +} + +variable "vyos_template_name" { + default = "vyos-1.5-rolling-202310010025-template" +}