Add Proxmox machines and Guacamole

zot
Daniel Ankers 2023-10-05 12:52:35 +01:00
parent 55c0c7f8cf
commit 1fc76b01ea
2 changed files with 113 additions and 0 deletions

78
main.tf
View File

@ -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 = <<EOF
${var.ssh_key}
EOF
}
resource "guacamole_connection_group" "routers" {
parent_identifier = "ROOT"
name = "Routers"
type = "organizational"
}
resource "guacamole_connection_ssh" "vyos_vms" {
for_each = { for x in proxmox_vm_qemu.vyos_router: x.id => 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
}
}

35
vars.tf
View File

@ -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"
}