diff --git a/agent/config/builder.go b/agent/config/builder.go index ca9e5694f..0bd383e29 100644 --- a/agent/config/builder.go +++ b/agent/config/builder.go @@ -371,9 +371,9 @@ func (b *Builder) Build() (rt RuntimeConfig, err error) { // derive other advertise addresses from the advertise address advertiseAddrLAN := b.makeIPAddr(b.expandFirstIP("advertise_addr", c.AdvertiseAddrLAN), advertiseAddr) advertiseAddrWAN := b.makeIPAddr(b.expandFirstIP("advertise_addr_wan", c.AdvertiseAddrWAN), advertiseAddrLAN) - rpcAdvertiseAddr := b.makeTCPAddr(b.expandFirstIP("advertise_addresses.rpc", c.AdvertiseAddrs.RPC), advertiseAddrLAN, serverPort) - serfAdvertiseAddrLAN := b.makeTCPAddr(b.expandFirstIP("advertise_addresses.serf_lan", c.AdvertiseAddrs.SerfLAN), advertiseAddrLAN, serfPortLAN) - serfAdvertiseAddrWAN := b.makeTCPAddr(b.expandFirstIP("advertise_addresses.serf_wan", c.AdvertiseAddrs.SerfWAN), advertiseAddrWAN, serfPortWAN) + rpcAdvertiseAddr := &net.TCPAddr{IP: advertiseAddrLAN.IP, Port: serverPort} + serfAdvertiseAddrLAN := &net.TCPAddr{IP: advertiseAddrLAN.IP, Port: serfPortLAN} + serfAdvertiseAddrWAN := &net.TCPAddr{IP: advertiseAddrWAN.IP, Port: serfPortWAN} // determine client addresses clientAddrs := b.expandIPs("client_addr", c.ClientAddr) @@ -683,15 +683,6 @@ func (b *Builder) Validate(rt RuntimeConfig) error { if ipaddr.IsAny(rt.AdvertiseAddrWAN.IP) { return fmt.Errorf("Advertise WAN address cannot be 0.0.0.0, :: or [::]") } - if ipaddr.IsAny(rt.RPCAdvertiseAddr) { - return fmt.Errorf("advertise_addrs.rpc cannot be 0.0.0.0, :: or [::]") - } - if ipaddr.IsAny(rt.SerfAdvertiseAddrLAN) { - return fmt.Errorf("advertise_addrs.serf_lan cannot be 0.0.0.0, :: or [::]") - } - if ipaddr.IsAny(rt.SerfAdvertiseAddrWAN) { - return fmt.Errorf("advertise_addrs.serf_wan cannot be 0.0.0.0, :: or [::]") - } if err := b.validateSegments(rt); err != nil { return err } diff --git a/agent/config/config.go b/agent/config/config.go index 1acbd0ccf..1ace6779f 100644 --- a/agent/config/config.go +++ b/agent/config/config.go @@ -136,7 +136,6 @@ type Config struct { Addresses Addresses `json:"addresses,omitempty" hcl:"addresses" mapstructure:"addresses"` AdvertiseAddrLAN *string `json:"advertise_addr,omitempty" hcl:"advertise_addr" mapstructure:"advertise_addr"` AdvertiseAddrWAN *string `json:"advertise_addr_wan,omitempty" hcl:"advertise_addr_wan" mapstructure:"advertise_addr_wan"` - AdvertiseAddrs AdvertiseAddrsConfig `json:"advertise_addrs,omitempty" hcl:"advertise_addrs" mapstructure:"advertise_addrs"` Autopilot Autopilot `json:"autopilot,omitempty" hcl:"autopilot" mapstructure:"autopilot"` BindAddr *string `json:"bind_addr,omitempty" hcl:"bind_addr" mapstructure:"bind_addr"` Bootstrap *bool `json:"bootstrap,omitempty" hcl:"bootstrap" mapstructure:"bootstrap"` diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index 272f605e9..e77c511f4 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -893,22 +893,78 @@ func TestConfigFlagsAndEdgecases(t *testing.T) { }, }, { - desc: "serf advertise address lan template", + desc: "advertise address lan with ports", flags: []string{`-data-dir=` + dataDir}, - json: []string{`{ "advertise_addrs": { "serf_lan": "{{ printf \"1.2.3.4\" }}" } }`}, - hcl: []string{`advertise_addrs = { serf_lan = "{{ printf \"1.2.3.4\" }}" }`}, + json: []string{`{ + "ports": { + "server": 1000, + "serf_lan": 2000, + "serf_wan": 3000 + }, + "advertise_addr": "1.2.3.4" + }`}, + hcl: []string{` + ports { + server = 1000 + serf_lan = 2000 + serf_wan = 3000 + } + advertise_addr = "1.2.3.4" + `}, patch: func(rt *RuntimeConfig) { - rt.SerfAdvertiseAddrLAN = tcpAddr("1.2.3.4:8301") + rt.AdvertiseAddrLAN = ipAddr("1.2.3.4") + rt.AdvertiseAddrWAN = ipAddr("1.2.3.4") + rt.RPCAdvertiseAddr = tcpAddr("1.2.3.4:1000") + rt.RPCBindAddr = tcpAddr("0.0.0.0:1000") + rt.SerfAdvertiseAddrLAN = tcpAddr("1.2.3.4:2000") + rt.SerfAdvertiseAddrWAN = tcpAddr("1.2.3.4:3000") + rt.SerfBindAddrLAN = tcpAddr("0.0.0.0:2000") + rt.SerfBindAddrWAN = tcpAddr("0.0.0.0:3000") + rt.SerfPortLAN = 2000 + rt.SerfPortWAN = 3000 + rt.ServerPort = 1000 + rt.TaggedAddresses = map[string]string{ + "lan": "1.2.3.4", + "wan": "1.2.3.4", + } rt.DataDir = dataDir }, }, { - desc: "serf advertise address wan template", + desc: "advertise address wan with ports", flags: []string{`-data-dir=` + dataDir}, - json: []string{`{ "advertise_addrs": { "serf_wan": "{{ printf \"1.2.3.4\" }}" } }`}, - hcl: []string{`advertise_addrs = { serf_wan = "{{ printf \"1.2.3.4\" }}" }`}, + json: []string{`{ + "ports": { + "server": 1000, + "serf_lan": 2000, + "serf_wan": 3000 + }, + "advertise_addr_wan": "1.2.3.4" + }`}, + hcl: []string{` + ports { + server = 1000 + serf_lan = 2000 + serf_wan = 3000 + } + advertise_addr_wan = "1.2.3.4" + `}, patch: func(rt *RuntimeConfig) { - rt.SerfAdvertiseAddrWAN = tcpAddr("1.2.3.4:8302") + rt.AdvertiseAddrLAN = ipAddr("10.0.0.1") + rt.AdvertiseAddrWAN = ipAddr("1.2.3.4") + rt.RPCAdvertiseAddr = tcpAddr("10.0.0.1:1000") + rt.RPCBindAddr = tcpAddr("0.0.0.0:1000") + rt.SerfAdvertiseAddrLAN = tcpAddr("10.0.0.1:2000") + rt.SerfAdvertiseAddrWAN = tcpAddr("1.2.3.4:3000") + rt.SerfBindAddrLAN = tcpAddr("0.0.0.0:2000") + rt.SerfBindAddrWAN = tcpAddr("0.0.0.0:3000") + rt.SerfPortLAN = 2000 + rt.SerfPortWAN = 3000 + rt.ServerPort = 1000 + rt.TaggedAddresses = map[string]string{ + "lan": "10.0.0.1", + "wan": "1.2.3.4", + } rt.DataDir = dataDir }, }, @@ -1397,33 +1453,6 @@ func TestConfigFlagsAndEdgecases(t *testing.T) { hcl: []string{`advertise_addr_wan = "::"`}, err: "Advertise WAN address cannot be 0.0.0.0, :: or [::]", }, - { - desc: "advertise_addrs.rpc any", - flags: []string{ - `-data-dir=` + dataDir, - }, - json: []string{`{ "advertise_addrs":{ "rpc": "[::]" } }`}, - hcl: []string{`advertise_addrs = { rpc = "[::]" }`}, - err: "advertise_addrs.rpc cannot be 0.0.0.0, :: or [::]", - }, - { - desc: "advertise_addrs.serf_lan any", - flags: []string{ - `-data-dir=` + dataDir, - }, - json: []string{`{ "advertise_addrs":{ "serf_lan": "[::]" } }`}, - hcl: []string{`advertise_addrs = { serf_lan = "[::]" }`}, - err: "advertise_addrs.serf_lan cannot be 0.0.0.0, :: or [::]", - }, - { - desc: "advertise_addrs.serf_wan any", - flags: []string{ - `-data-dir=` + dataDir, - }, - json: []string{`{ "advertise_addrs":{ "serf_wan": "0.0.0.0" } }`}, - hcl: []string{`advertise_addrs = { serf_wan = "0.0.0.0" }`}, - err: "advertise_addrs.serf_wan cannot be 0.0.0.0, :: or [::]", - }, { desc: "dns_config.udp_answer_limit invalid", flags: []string{ @@ -1914,11 +1943,6 @@ func TestFullConfig(t *testing.T) { }, "advertise_addr": "17.99.29.16", "advertise_addr_wan": "78.63.37.19", - "advertise_addrs": { - "rpc": "28.27.94.38", - "serf_lan": "49.38.36.95", - "serf_wan": "63.38.52.13" - }, "autopilot": { "cleanup_dead_servers": true, "disable_upgrade_migration": true, @@ -2334,11 +2358,6 @@ func TestFullConfig(t *testing.T) { } advertise_addr = "17.99.29.16" advertise_addr_wan = "78.63.37.19" - advertise_addrs = { - rpc = "28.27.94.38" - serf_lan = "49.38.36.95" - serf_wan = "63.38.52.13" - } autopilot = { cleanup_dead_servers = true disable_upgrade_migration = true @@ -3022,7 +3041,7 @@ func TestFullConfig(t *testing.T) { NodeName: "otlLxGaI", NonVotingServer: true, PidFile: "43xN80Km", - RPCAdvertiseAddr: tcpAddr("28.27.94.38:3757"), + RPCAdvertiseAddr: tcpAddr("17.99.29.16:3757"), RPCBindAddr: tcpAddr("16.99.34.17:3757"), RPCProtocol: 30793, RPCRateLimit: 12029.43, @@ -3218,8 +3237,8 @@ func TestFullConfig(t *testing.T) { }, }, }, - SerfAdvertiseAddrLAN: tcpAddr("49.38.36.95:8301"), - SerfAdvertiseAddrWAN: tcpAddr("63.38.52.13:8302"), + SerfAdvertiseAddrLAN: tcpAddr("17.99.29.16:8301"), + SerfAdvertiseAddrWAN: tcpAddr("78.63.37.19:8302"), SerfBindAddrLAN: tcpAddr("99.43.63.15:8301"), SerfBindAddrWAN: tcpAddr("67.88.33.19:8302"), SessionTTLMin: 26627 * time.Second,