Enhance variable descriptions in Terraform configuration for clarity and usability

This commit is contained in:
2026-03-01 14:26:55 +02:00
parent 0928b59bda
commit 299fa26c4e
2 changed files with 76 additions and 28 deletions

24
main.tf
View File

@@ -1,12 +1,22 @@
/**
* # Root Configuration
*
* Orchestrates the homelab infrastructure:
* - **pip** Discovers the current public IP for firewall allowlisting.
* - **pangolin** Deploys an Azure Linux VM as a reverse-proxy / WireGuard gateway.
* - **foundry** Creates a Proxmox LXC container running Foundry VTT.
* - **dns** Manages Cloudflare DNS records pointing at the Pangolin proxy.
*/
module "pip" { module "pip" {
source = "./modules/pip" source = "./modules/pip"
} }
module "pangolin" { module "pangolin" {
source = "./modules/pangolin" source = "./modules/pangolin"
ssh_pubkey = file(var.ssh_pubkey_path) ssh_pubkey = file(var.ssh_pubkey_path)
allowed_ssh_cidrs_ipv4 = ["${module.pip.ip}/32"] allowed_ssh_cidrs_ipv4 = ["${module.pip.ip}/32"]
admin_username = var.admin_username admin_username = var.admin_username
} }
module "foundry" { module "foundry" {
@@ -20,10 +30,10 @@ module "foundry" {
} }
module "dns" { module "dns" {
source = "./modules/dns" source = "./modules/dns"
domain_zone_id = var.domain_zone_id domain_zone_id = var.domain_zone_id
domain_name = var.domain domain_name = var.domain
pangolin-proxy-v4 = module.pangolin.public_ipv4 pangolin-proxy-v4 = module.pangolin.public_ipv4
pangolin-proxy-v6 = module.pangolin.public_ipv6 pangolin-proxy-v6 = module.pangolin.public_ipv6
cdn_subdomains = ["foundry"] cdn_subdomains = ["foundry"]
} }

View File

@@ -1,46 +1,84 @@
variable "domain" { variable "domain" {
type = string description = "Root domain name managed in Cloudflare."
type = string
} }
variable "domain_zone_id" { variable "domain_zone_id" {
type = string description = "Cloudflare Zone ID for the domain."
type = string
} }
variable "cloudflare_api_token" { variable "cloudflare_api_token" {
type = string description = "Cloudflare API token with DNS edit permissions."
sensitive = true type = string
sensitive = true
}
variable "pve_api_url" {
description = "Proxmox VE API endpoint URL."
type = string
} }
variable "pve_api_url" { type = string }
variable "pve_token" { variable "pve_token" {
type = string description = "Proxmox VE API token in 'user@realm!tokenid=secret' format."
sensitive = true type = string
sensitive = true
} }
variable "node_name" { type = string } # e.g. "pve" variable "node_name" {
variable "datastore_id" { type = string } # e.g. "local-lvm" description = "Proxmox node to deploy resources on (e.g. 'pve')."
variable "bridge" { type = string } # e.g. "vmbr0" type = string
}
variable "template_vmid" { type = number } # VMID of your template variable "datastore_id" {
variable "vm_id" { type = number } # VMID to assign description = "Proxmox datastore for VM/container disks (e.g. 'local-lvm')."
variable "name" { type = string } type = string
}
variable "ssh_pubkey_path" { type = string } # e.g. "~/.ssh/id_ed25519.pub" variable "bridge" {
description = "Proxmox network bridge for VM/container NICs (e.g. 'vmbr0')."
type = string
}
variable "template_vmid" {
description = "VMID of the Proxmox VM template to clone."
type = number
}
variable "vm_id" {
description = "VMID to assign to the new VM."
type = number
}
variable "name" {
description = "Name for the VM."
type = string
}
variable "ssh_pubkey_path" {
description = "Path to the SSH public key file (e.g. '~/.ssh/id_ed25519.pub')."
type = string
}
variable "admin_username" { variable "admin_username" {
type = string description = "Admin username for provisioned VMs."
default = "azureuser" type = string
default = "azureuser"
} }
variable "azure_location" { variable "azure_location" {
type = string description = "Azure region for resource deployment."
default = "westeurope" type = string
default = "westeurope"
} }
variable "azure_subscription_id" { variable "azure_subscription_id" {
type = string description = "Azure subscription ID to deploy resources into."
type = string
} }
variable "allowed_ssh_cidrs_ipv4" { variable "allowed_ssh_cidrs_ipv4" {
type = list(string)
description = "IPv4 CIDRs allowed to SSH (22/tcp). Empty list means allow from anywhere." description = "IPv4 CIDRs allowed to SSH (22/tcp). Empty list means allow from anywhere."
default = [] type = list(string)
default = []
} }