Add support for clustering
diff --git a/README.rst b/README.rst
index c2f5587..0105444 100644
--- a/README.rst
+++ b/README.rst
@@ -64,6 +64,28 @@
             idb02:
               location: idb02.local:9096
 
+InfluxDB cluster:
+
+.. code-block:: yaml
+
+    influxdb:
+      server:
+        enabled: true
+      meta:
+        bind:
+          address: 0.0.0.0
+          port: 8088
+          http_address: 0.0.0.0
+          http_port: 8091
+      cluster:
+        members:
+          - host: idb01.local
+            port: 8091
+          - host: idb02.local
+            port: 8091
+          - host: idb03.local
+            port: 8091
+
 Deploy influxdb apt repository (using linux formula):
 
 .. code-block:: yaml
diff --git a/influxdb/files/default b/influxdb/files/default
new file mode 100644
index 0000000..20d854e
--- /dev/null
+++ b/influxdb/files/default
@@ -0,0 +1,11 @@
+{%- from "influxdb/map.jinja" import server with context -%}
+{%- if server.cluster is defined %}
+{%- for member in server.cluster.members %}
+{%- if member.host != grains.fqdn %}
+INFLUXD_OPTS="-join {{ member.host }}:{{ member.port }}"
+{%- endif %}
+{%- endfor %}
+{%- endif %}
+{#-
+vim: syntax=jinja
+-#}
diff --git a/influxdb/files/influxdb.conf b/influxdb/files/influxdb.conf
index 605ed62..76c9633 100644
--- a/influxdb/files/influxdb.conf
+++ b/influxdb/files/influxdb.conf
@@ -21,6 +21,7 @@
 ### about the InfluxDB cluster.
 ###
 
+{%- if server.meta.enabled %}
 [meta]
   # Where the metadata/raft database is stored
   dir = "/var/lib/influxdb/meta"
@@ -33,6 +34,14 @@
 
   # The default duration for leases.
   lease-duration = "1m0s"
+{%- else %}
+[meta]
+  enabled = false
+{%- endif %}
+  {%- if server.get('meta', {}).bind is defined %}
+  bind-address = "{{ server.meta.bind.address }}:{{ server.admin.bind.port }}"
+  http-bind-address = "{{ server.meta.bind.http_address }}:{{ server.admin.bind.http_port }}"
+  {%- endif %}
 
 ###
 ### [data]
@@ -43,6 +52,7 @@
 ### defaults should work for most systems.
 ###
 
+{%- if server.data.enabled %}
 [data]
   # Controls if this node holds time series data shards in the cluster
   enabled = true
@@ -86,6 +96,10 @@
   # block in a TSM file. Larger numbers may yield better compression
   # but could incur a performance penalty when querying
   # max-points-per-block = 1000
+{%- else %}
+[data]
+  enabled = false
+{%- endif %}
 
 ###
 ### [cluster]
diff --git a/influxdb/map.jinja b/influxdb/map.jinja
index 3c63303..a71c157 100644
--- a/influxdb/map.jinja
+++ b/influxdb/map.jinja
@@ -20,6 +20,10 @@
     bind:
       address: 0.0.0.0
       port: 8083
+  data:
+    enabled: true
+  meta:
+    enabled: true
 {%- endload %}
 
 {%- set server = salt['grains.filter_by'](base_defaults, merge=salt['pillar.get']('influxdb:server')) %}
diff --git a/influxdb/server.sls b/influxdb/server.sls
index 0c310f7..06643b5 100644
--- a/influxdb/server.sls
+++ b/influxdb/server.sls
@@ -13,11 +13,20 @@
   - require:
     - pkg: influxdb_packages
 
+influxdb_default:
+  file.managed:
+  - name: /etc/default/influxdb
+  - source: salt://influxdb/files/default
+  - template: jinja
+  - require:
+    - pkg: influxdb_packages
+
 influxdb_service:
   service.running:
   - enable: true
   - name: {{ server.service }}
   - watch:
     - file: influxdb_config
+    - file: influxdb_default
 
 {%- endif %}
diff --git a/metadata/service/server/cluster.yml b/metadata/service/server/cluster.yml
new file mode 100644
index 0000000..4c330c4
--- /dev/null
+++ b/metadata/service/server/cluster.yml
@@ -0,0 +1,20 @@
+applications:
+- influxdb
+classes:
+- service.influxdb.support
+parameters:
+  influxdb:
+    server:
+      enabled: true
+      admin:
+        bind:
+          address: 0.0.0.0
+      http:
+        bind:
+          address: 0.0.0.0
+      meta:
+        bind:
+          address: 0.0.0.0
+          port: 8088
+          http_address: 0.0.0.0
+          port: 8091
diff --git a/tests/pillar/cluster.sls b/tests/pillar/cluster.sls
new file mode 100644
index 0000000..19911cb
--- /dev/null
+++ b/tests/pillar/cluster.sls
@@ -0,0 +1,17 @@
+influxdb:
+  server:
+    enabled: true
+    meta:
+      bind:
+        address: 0.0.0.0
+        port: 8088
+        http_address: 0.0.0.0
+        http_port: 8091
+    cluster:
+      members:
+        - host: idb01.local
+          port: 8091
+        - host: idb02.local
+          port: 8091
+        - host: idb03.local
+          port: 8091
diff --git a/tests/pillar/server.sls b/tests/pillar/single.sls
similarity index 100%
rename from tests/pillar/server.sls
rename to tests/pillar/single.sls