add vault, consul-template, arvados pkgs
[arvados.git] / services / boot / consul.go
index 095ea8940c617aa1e172eb1d10c3935a7d4a869f..e1015ae59d07c37a4ad5efb7b93642798f98ac0f 100644 (file)
@@ -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 {