Add Proxmox machines and Guacamole
parent
55c0c7f8cf
commit
1fc76b01ea
78
main.tf
78
main.tf
|
|
@ -12,6 +12,14 @@ terraform {
|
||||||
source = "mrparkers/keycloak"
|
source = "mrparkers/keycloak"
|
||||||
version = "4.3.1"
|
version = "4.3.1"
|
||||||
}
|
}
|
||||||
|
proxmox = {
|
||||||
|
source = "telmate/proxmox"
|
||||||
|
version = "2.9.8"
|
||||||
|
}
|
||||||
|
guacamole = {
|
||||||
|
source = "techBeck03/guacamole"
|
||||||
|
version = "1.4.1"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
backend "kubernetes" {
|
backend "kubernetes" {
|
||||||
secret_suffix = "tfstate"
|
secret_suffix = "tfstate"
|
||||||
|
|
@ -36,6 +44,19 @@ provider "keycloak" {
|
||||||
url = "https://keycloak.${var.domain_suffix}"
|
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" {
|
resource "helm_release" "keycloak" {
|
||||||
name = "keycloak"
|
name = "keycloak"
|
||||||
namespace = var.keycloak_namespace
|
namespace = var.keycloak_namespace
|
||||||
|
|
@ -374,3 +395,60 @@ service:
|
||||||
EOT
|
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
35
vars.tf
|
|
@ -41,3 +41,38 @@ variable "influxdb_namespace" {
|
||||||
variable "grafana_namespace" {
|
variable "grafana_namespace" {
|
||||||
default = "grafana"
|
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"
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue