feat: add remote node configuration
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Kasper Juul Hermansen 2025-01-12 13:28:20 +01:00
parent 0f414cee73
commit 6fc69da087
Signed by: kjuulh
SSH Key Fingerprint: SHA256:RjXh0p7U6opxnfd3ga/Y9TCo18FYlHFdSpRIV72S/QM
3 changed files with 44 additions and 1 deletions

4
files/node.caddy Normal file
View File

@ -0,0 +1,4 @@
@${name}-node ${replace(name, "_", "-")}.nodes.i.kjuulh.io
handle ${name}-node {
reverse-proxy ${ip}:80
}

31
node.tf
View File

@ -3,6 +3,11 @@ locals {
hostname = var.name
domain = var.domain
})
node_config = templatefile("${path.module}/files/node.caddy", {
name = var.name
ip = var.ip_address
})
}
# Create a local copy of the file, to transfer to Proxmox
@ -11,6 +16,11 @@ resource "local_file" "cloud_init_deb12_node" {
filename = "${path.module}/files/user_data_cloud_init_deb12_${var.name}.cfg"
}
resource "local_file" "node_caddy" {
content = local.node_config
filename = "${path.module}/files/${var.name}.caddy"
}
# Transfer the file to the Proxmox Host
resource "null_resource" "cloud_init_deb12_node" {
connection {
@ -30,13 +40,32 @@ resource "null_resource" "cloud_init_deb12_node" {
]
}
resource "null_resource" "node_caddy_template" {
connection {
type = "ssh"
user = "root"
private_key = var.ssh_private
host = var.proxy_ip
}
provisioner "file" {
source = local_file.node_caddy.filename
destination = "${var.proxy_location}/${var.name}.yml"
}
depends_on = [
local_file.node_caddy
]
}
# Create the VM
resource "proxmox_vm_qemu" "node" {
## Wait for the cloud-config file to exist
depends_on = [
null_resource.cloud_init_deb12_node
null_resource.cloud_init_deb12_node,
null_resource.node_caddy_template
]
name = var.name

View File

@ -8,6 +8,16 @@ variable "proxmox_ip" {
default = "10.0.11.0"
}
variable "proxy_ip" {
description = "which ip to use for the caddy file"
default = "10.0.9.0"
}
variable "proxy_location" {
description = "which where to place the files upstream"
default = "/root/wireguard/nodes"
}
variable "proxmox_node" {
description = "which node is the vm associated"
default = "clank-smolboks-0"