X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/aede26e6edbd6c2456d4bd46db2ed32740b46808..eb459d42be239bd579634884292d3606896792fd:/services/boot/consul.go diff --git a/services/boot/consul.go b/services/boot/consul.go index 095ea8940c..e1015ae59d 100644 --- a/services/boot/consul.go +++ b/services/boot/consul.go @@ -20,6 +20,9 @@ func (cb *consulBooter) Boot(ctx context.Context) error { cb.Lock() defer cb.Unlock() + if cb.check(ctx) == nil { + return nil + } cfg := cfg(ctx) bin := cfg.UsrDir + "/bin/consul" err := (&download{ @@ -31,23 +34,28 @@ func (cb *consulBooter) Boot(ctx context.Context) error { if err != nil { return err } - if cb.check(ctx) == nil { - return nil + dataDir := cfg.DataDir + "/consul" + if err := os.MkdirAll(dataDir, 0700); err != nil { + return err } args := []string{ "agent", "-server", - "-advertise=127.0.0.1", - "-data-dir", cfg.DataDir + "/consul", + "-datacenter=" + cfg.SiteID, + "-dns-port=" + fmt.Sprintf("%d", cfg.Ports.ConsulDNS), + "-http-port=" + fmt.Sprintf("%d", cfg.Ports.ConsulHTTP), + "-serf-lan-bind=0.0.0.0:" + fmt.Sprintf("%d", cfg.Ports.ConsulSerfLAN), + "-serf-wan-bind=0.0.0.0:" + fmt.Sprintf("%d", cfg.Ports.ConsulSerfWAN), + "-data-dir", dataDir, "-bootstrap-expect", fmt.Sprintf("%d", len(cfg.ControlHosts))} - supervisor := newSupervisor("consul", bin, args...) - running, err := supervisor.Running() + supervisor := newSupervisor(ctx, "consul", bin, args...) + running, err := supervisor.Running(ctx) if err != nil { return err } if !running { defer feedbackf(ctx, "starting consul service")() - err = supervisor.Start() + err = supervisor.Start(ctx) if err != nil { return fmt.Errorf("starting consul: %s", err) } @@ -68,6 +76,7 @@ var consulCfg = api.DefaultConfig() func (cb *consulBooter) check(ctx context.Context) error { cfg := cfg(ctx) + consulCfg.Address = fmt.Sprintf("127.0.0.1:%d", cfg.Ports.ConsulHTTP) consulCfg.Datacenter = cfg.SiteID consul, err := api.NewClient(consulCfg) if err != nil {