"path"
"strings"
"sync"
+ "time"
"github.com/hashicorp/consul/api"
)
if err != nil {
return err
}
- dataDir := cfg.DataDir + "/consul"
+ dataDir := path.Join(cfg.DataDir, "consul")
if err := os.MkdirAll(dataDir, 0700); err != nil {
return err
}
args := []string{"agent"}
{
cf := path.Join(cfg.DataDir, "consul-encrypt.json")
- _, err := os.Stat(cf)
- if os.IsNotExist(err) {
+ if _, err := os.Stat(cf); err != nil && !os.IsNotExist(err) {
+ return err
+ } else if err != nil {
key, err := exec.Command(bin, "keygen").CombinedOutput()
if err != nil {
return err
}
- err = atomicWriteJSON(cf, map[string]interface{}{
+ if err = atomicWriteJSON(cf, map[string]interface{}{
"encrypt": strings.TrimSpace(string(key)),
- }, 0400)
- }
- if err != nil {
- return err
+ }, 0400); err != nil {
+ return err
+ }
}
args = append(args, "-config-file="+cf)
}
{
cf := path.Join(cfg.DataDir, "consul-ports.json")
err = atomicWriteJSON(cf, map[string]interface{}{
+ "client_addr": "0.0.0.0",
"bootstrap_expect": len(cfg.ControlHosts),
"data_dir": dataDir,
"datacenter": cfg.SiteID,
"server": true,
+ "ui": true,
"ports": map[string]int{
"dns": cfg.Ports.ConsulDNS,
"http": cfg.Ports.ConsulHTTP,
}
}
}
- return cb.check(ctx)
+ return waitCheck(ctx, 30*time.Second, cb.check)
}
var consulCfg = api.DefaultConfig()