fix: default proxmox ssh address from api url

This commit is contained in:
eding 2026-07-19 23:58:40 +02:00
parent fe0335442d
commit ea732ebded
3 changed files with 19 additions and 1 deletions

View file

@ -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")

View file

@ -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()
}

View file

@ -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)))