cb.Lock()
defer cb.Unlock()
+ if cb.check(ctx) == nil {
+ return nil
+ }
cfg := cfg(ctx)
bin := cfg.UsrDir + "/bin/consul"
err := (&download{
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)
}
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 {