mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-06-30 02:31:10 +00:00
fix(provider): do not blindly use first IP for SSH (#704)
For SSH access, try in order: - IPv4 address of the interface with IPv4 Gateway (if there is one) - IPv6 address of the interface with IPv6 Gateway (if there is one) - fallback to the first interface with IPv4 address Signed-off-by: Oto Petřík <oto.petrik@gmail.com> Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
parent
d2b8ce1a7d
commit
a586d0381e
@ -407,13 +407,34 @@ func (r *apiResolver) Resolve(ctx context.Context, nodeName string) (ssh.Proxmox
|
||||
|
||||
nodeAddress := ""
|
||||
|
||||
// try IPv4 address on the interface with IPv4 gateway
|
||||
for _, d := range networkDevices {
|
||||
if d.Address != nil {
|
||||
if d.Gateway != nil && d.Address != nil {
|
||||
nodeAddress = *d.Address
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if nodeAddress == "" {
|
||||
// fallback 1: try IPv6 address on the interface with IPv6 gateway
|
||||
for _, d := range networkDevices {
|
||||
if d.Gateway6 != nil && d.Address6 != nil {
|
||||
nodeAddress = *d.Address6
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if nodeAddress == "" {
|
||||
// fallback 2: use first interface with any IPv4 address
|
||||
for _, d := range networkDevices {
|
||||
if d.Address != nil {
|
||||
nodeAddress = *d.Address
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if nodeAddress == "" {
|
||||
return ssh.ProxmoxNode{}, fmt.Errorf("failed to determine the IP address of node \"%s\"", nc.NodeName)
|
||||
}
|
||||
|
@ -181,13 +181,34 @@ func (r *apiResolver) Resolve(ctx context.Context, nodeName string) (ssh.Proxmox
|
||||
|
||||
nodeAddress := ""
|
||||
|
||||
// try IPv4 address on the interface with IPv4 gateway
|
||||
for _, d := range networkDevices {
|
||||
if d.Address != nil {
|
||||
if d.Gateway != nil && d.Address != nil {
|
||||
nodeAddress = *d.Address
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if nodeAddress == "" {
|
||||
// fallback 1: try IPv6 address on the interface with IPv6 gateway
|
||||
for _, d := range networkDevices {
|
||||
if d.Gateway6 != nil && d.Address6 != nil {
|
||||
nodeAddress = *d.Address6
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if nodeAddress == "" {
|
||||
// fallback 2: use first interface with any IPv4 address
|
||||
for _, d := range networkDevices {
|
||||
if d.Address != nil {
|
||||
nodeAddress = *d.Address
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if nodeAddress == "" {
|
||||
return ssh.ProxmoxNode{}, fmt.Errorf("failed to determine the IP address of node \"%s\"", nc.NodeName)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user