Some checks failed
Run nix flake check / flake-check (push) Has been cancelled
Implement dual improvements to enable efficient testing of pipeline changes without polluting master branch: 1. Add --force flag to create-host script - Skip hostname/IP uniqueness validation - Overwrite existing host configurations - Update entries in flake.nix and terraform/vms.tf (no duplicates) - Useful for iterating on configurations during testing 2. Add branch support to bootstrap mechanism - Bootstrap service reads NIXOS_FLAKE_BRANCH environment variable - Defaults to master if not set - Uses branch in git URL via ?ref= parameter - Service loads environment from /etc/environment 3. Add cloud-init disk support for branch configuration - VMs can specify flake_branch field in terraform/vms.tf - Automatically generates cloud-init snippet setting NIXOS_FLAKE_BRANCH - Uploads snippet to Proxmox via SSH - Production VMs omit flake_branch and use master 4. Update documentation - Document --force flag usage in create-host README - Add branch testing examples in terraform README - Update TODO.md with testing workflow - Add .generated/ to gitignore Testing workflow: Create feature branch, set flake_branch in VM definition, deploy with terraform, iterate with --force flag, clean up before merging. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
104 lines
2.4 KiB
HCL
104 lines
2.4 KiB
HCL
variable "proxmox_api_url" {
|
|
description = "Proxmox API URL (e.g., https://proxmox.home.2rjus.net:8006/api2/json)"
|
|
type = string
|
|
}
|
|
|
|
variable "proxmox_api_token_id" {
|
|
description = "Proxmox API Token ID (e.g., root@pam!terraform)"
|
|
type = string
|
|
sensitive = true
|
|
}
|
|
|
|
variable "proxmox_api_token_secret" {
|
|
description = "Proxmox API Token Secret"
|
|
type = string
|
|
sensitive = true
|
|
}
|
|
|
|
variable "proxmox_tls_insecure" {
|
|
description = "Skip TLS verification (set to true for self-signed certs)"
|
|
type = bool
|
|
default = true
|
|
}
|
|
|
|
variable "proxmox_host" {
|
|
description = "Proxmox host for SSH access (used to upload cloud-init snippets)"
|
|
type = string
|
|
default = "pve1.home.2rjus.net"
|
|
}
|
|
|
|
# Default values for VM configurations
|
|
# These can be overridden per-VM in vms.tf
|
|
|
|
variable "default_target_node" {
|
|
description = "Default Proxmox node to deploy VMs to"
|
|
type = string
|
|
default = "pve1"
|
|
}
|
|
|
|
variable "default_template_name" {
|
|
description = "Default template VM name to clone from"
|
|
type = string
|
|
default = "nixos-25.11.20260128.fa83fd8"
|
|
}
|
|
|
|
variable "default_ssh_public_key" {
|
|
description = "Default SSH public key for root user"
|
|
type = string
|
|
default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAwfb2jpKrBnCw28aevnH8HbE5YbcMXpdaVv2KmueDu6 torjus@gunter"
|
|
}
|
|
|
|
variable "default_storage" {
|
|
description = "Default storage backend for VM disks"
|
|
type = string
|
|
default = "local-zfs"
|
|
}
|
|
|
|
variable "default_bridge" {
|
|
description = "Default network bridge"
|
|
type = string
|
|
default = "vmbr0"
|
|
}
|
|
|
|
variable "default_vlan_tag" {
|
|
description = "Default VLAN tag"
|
|
type = number
|
|
default = 13
|
|
}
|
|
|
|
variable "default_gateway" {
|
|
description = "Default network gateway for static IP VMs"
|
|
type = string
|
|
default = "10.69.13.1"
|
|
}
|
|
|
|
variable "default_nameservers" {
|
|
description = "Default DNS nameservers"
|
|
type = string
|
|
default = "10.69.13.5 10.69.13.6"
|
|
}
|
|
|
|
variable "default_search_domain" {
|
|
description = "Default DNS search domain"
|
|
type = string
|
|
default = "home.2rjus.net"
|
|
}
|
|
|
|
variable "default_cpu_cores" {
|
|
description = "Default number of CPU cores"
|
|
type = number
|
|
default = 2
|
|
}
|
|
|
|
variable "default_memory" {
|
|
description = "Default memory in MB"
|
|
type = number
|
|
default = 2048
|
|
}
|
|
|
|
variable "default_disk_size" {
|
|
description = "Default disk size"
|
|
type = string
|
|
default = "20G"
|
|
}
|