From ea732ebded75c196b288814fcdff546bfd22754d Mon Sep 17 00:00:00 2001 From: eding Date: Sun, 19 Jul 2026 23:58:40 +0200 Subject: [PATCH] fix: default proxmox ssh address from api url --- internal/bootstrap/bootstrap.go | 5 +++++ internal/config/types.go | 11 +++++++++++ internal/ui/wizard.go | 4 +++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/internal/bootstrap/bootstrap.go b/internal/bootstrap/bootstrap.go index ec4d64c..f38c9a0 100644 --- a/internal/bootstrap/bootstrap.go +++ b/internal/bootstrap/bootstrap.go @@ -115,6 +115,11 @@ func renderTerraformTFVars(cfg config.Config) string { builder.WriteString(fmt.Sprintf(" %q = %q\n", node, iface)) } builder.WriteString("}\n") + builder.WriteString("node_addresses = {\n") + for node, addr := range cfg.Talos.Proxmox.NodeAddresses { + builder.WriteString(fmt.Sprintf(" %q = %q\n", node, addr)) + } + builder.WriteString("}\n") builder.WriteString(fmt.Sprintf("create_vlan_interface = %t\n", cfg.Talos.Cluster.CreateVLANInterface)) builder.WriteString("image_cache_proxy = { enabled = false, ip = \"\", port = 3128 }\n") builder.WriteString("nodes = [\n") diff --git a/internal/config/types.go b/internal/config/types.go index e85383b..9bcebfd 100644 --- a/internal/config/types.go +++ b/internal/config/types.go @@ -1,5 +1,7 @@ package config +import "net/url" + type Config struct { WorkspaceDir string `yaml:"workspaceDir"` Git GitConfig `yaml:"git"` @@ -55,6 +57,7 @@ type TalosProxmoxConfig struct { DefaultNode string `yaml:"defaultNode"` Pool string `yaml:"pool"` NodeInterfaces map[string]string `yaml:"nodeInterfaces"` + NodeAddresses map[string]string `yaml:"nodeAddresses"` Insecure bool `yaml:"insecure"` } @@ -96,3 +99,11 @@ type TalosNetwork struct { Gateway string `yaml:"gateway,omitempty"` VLANID int `yaml:"vlanId"` } + +func (c TalosProxmoxConfig) APIURLHost() string { + parsed, err := url.Parse(c.APIURL) + if err != nil || parsed.Hostname() == "" { + return "192.168.0.15" + } + return parsed.Hostname() +} diff --git a/internal/ui/wizard.go b/internal/ui/wizard.go index 20ff3a5..56819cf 100644 --- a/internal/ui/wizard.go +++ b/internal/ui/wizard.go @@ -55,9 +55,11 @@ func RunBootstrapWizard(initial config.Config) (config.Config, error) { printNodes(discovered) cfg.Talos.Proxmox.DefaultNode = prompt(reader, "Default Proxmox node", fallback(cfg.Talos.Proxmox.DefaultNode, discovered[0].Name)) cfg.Talos.Proxmox.NodeInterfaces = map[string]string{} + cfg.Talos.Proxmox.NodeAddresses = map[string]string{} for _, node := range discovered { fallbackIface := first(node.Networks, "vmbr0") cfg.Talos.Proxmox.NodeInterfaces[node.Name] = prompt(reader, fmt.Sprintf("Primary interface for %s", node.Name), fallbackIface) + cfg.Talos.Proxmox.NodeAddresses[node.Name] = prompt(reader, fmt.Sprintf("SSH/API hostname or IP for %s", node.Name), fallback(cfg.Talos.Proxmox.NodeAddresses[node.Name], cfg.Talos.Proxmox.APIURLHost())) } cfg.Talos.Cluster.Name = prompt(reader, "Talos cluster name", fallback(cfg.Talos.Cluster.Name, "proxmox-talos-dev02-cluster")) @@ -67,7 +69,7 @@ func RunBootstrapWizard(initial config.Config) (config.Config, error) { cfg.Talos.Cluster.DNSServers = promptList(reader, "DNS servers", fallbackList(cfg.Talos.Cluster.DNSServers, []string{"192.168.0.222", "1.1.1.1"})) cfg.Talos.Cluster.DiskStorage = prompt(reader, "Primary disk storage", fallback(cfg.Talos.Cluster.DiskStorage, firstStorageByCapability(discovered, storageSupportsDisk, "local-lvm"))) cfg.Talos.Cluster.AdditionalStorage = prompt(reader, "Additional disk storage", fallback(cfg.Talos.Cluster.AdditionalStorage, cfg.Talos.Cluster.DiskStorage)) - cfg.Talos.Cluster.CreateVLANInterface = promptBool(reader, "Create VLAN interfaces", cfg.Talos.Cluster.CreateVLANInterface || !hasInitial(initial)) + cfg.Talos.Cluster.CreateVLANInterface = promptBool(reader, "Create VLAN interfaces", true) latestTalos := talos.LatestVersion() cfg.Talos.Image.TalosVersion = talos.NormalizeVersion(prompt(reader, "Talos version", fallback(cfg.Talos.Image.TalosVersion, latestTalos)))