use initial_cluster_state to configure cluster
Change-Id: I2d288f25b30e842551a92dd559852a1bf283c056
diff --git a/etcd/files/configenv b/etcd/files/configenv
index 43550b4..7fdf06d 100644
--- a/etcd/files/configenv
+++ b/etcd/files/configenv
@@ -1,6 +1,6 @@
{%- from "etcd/map.jinja" import server with context %}
# this file can be sourced and used to configure etcdctl
-export ETCDCTL_ENDPOINT="{%- if server.bind.host != '127.0.0.1' %}http{% if server.get('ssl', {}).get('enabled') %}s{% endif %}://{{ server.bind.host }}:4001,{% endif %}http{% if server.get('ssl', {}).get('enabled') %}s{% endif %}://127.0.0.1:4001"
+export ETCDCTL_ENDPOINT="{% for member in server.members %}http{% if server.get('ssl', {}).get('enabled') %}s{% endif %}://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %}"
{%- if server.get('ssl', {}).get('enabled') %}
export ETCDCTL_CA_FILE=/var/lib/etcd/ca.pem
export ETCDCTL_CERT_FILE=/var/lib/etcd/etcd-server.pem
diff --git a/etcd/files/default b/etcd/files/default
index 4eb2319..84fe090 100644
--- a/etcd/files/default
+++ b/etcd/files/default
@@ -156,7 +156,7 @@
## value is set, etcd will attempt to start but fail safely.
## default: "new"
# ETCD_INITIAL_CLUSTER_STATE="existing"
-ETCD_INITIAL_CLUSTER_STATE="new"
+ETCD_INITIAL_CLUSTER_STATE="{{ initial_cluster_state }}"
##### -initial-cluster-token
## Initial cluster token for the etcd cluster during bootstrap.
diff --git a/etcd/server/service.sls b/etcd/server/service.sls
index e9c2306..618e76b 100644
--- a/etcd/server/service.sls
+++ b/etcd/server/service.sls
@@ -38,6 +38,12 @@
file.managed:
- source: salt://etcd/files/default
- template: jinja
+ - defaults:
+{%- if salt['cmd.run']('. /var/lib/etcd/configenv; etcdctl cluster-health > /dev/null 2>&1; echo $?') != '0' %}
+ initial_cluster_state: new
+{%- else %}
+ initial_cluster_state: existing
+{%- endif %}
/var/lib/etcd/:
file.directory:
diff --git a/etcd/server/setup.sls b/etcd/server/setup.sls
index 13f417d..ddde63f 100644
--- a/etcd/server/setup.sls
+++ b/etcd/server/setup.sls
@@ -10,4 +10,4 @@
{%- endfor %}
-{%- endif %}
\ No newline at end of file
+{%- endif %}