Compatibility with older salt, fix first deploy
diff --git a/README.rst b/README.rst
index 34b4dab..97d0d98 100644
--- a/README.rst
+++ b/README.rst
@@ -13,7 +13,17 @@
 ``glusterfs.server``
 --------------------
 
-Setup GlusterFS server
+Setup GlusterFS server (including both service and setup)
+
+``glusterfs.server.service``
+----------------------------
+
+Setup and start GlusterFS server service
+
+``glusterfs.server.setup``
+----------------------------
+
+Setup GlusterFS peers and volumes
 
 ``glusterfs.client``
 --------------------
diff --git a/glusterfs/server.sls b/glusterfs/server.sls
deleted file mode 100644
index 7cb8d6e..0000000
--- a/glusterfs/server.sls
+++ /dev/null
@@ -1,73 +0,0 @@
-{% from "glusterfs/map.jinja" import server with context %}
-
-{%- if server.enabled %}
-
-glusterfs_packages:
-  pkg.installed:
-    - names: {{ server.pkgs }}
-
-glusterfs_service:
-  service.running:
-    - name: {{ server.service }}
-    - require:
-      - pkg: glusterfs_packages
-
-{%- if server.peers is defined %}
-
-glusterfs_peers:
-    glusterfs.peered:
-      - names: {{ server.peers }}
-      - require:
-        - service: glusterfs_service
-
-{%- endif %}
-
-{%- if server.volumes is defined %}
-{%- for name, volume in server.volumes.iteritems() %}
-
-{{ volume.storage }}:
-  file.directory:
-    - makedirs: true
-
-glusterfs_vol_{{ name }}:
-  glusterfs.created:
-    - name: {{ name }}
-    {%- if volume.replica is defined %}
-    - replica: {{ volume.replica }}
-    {%- endif %}
-    {%- if volume.stripe is defined %}
-    - stripe: {{ volume.stripe }}
-    {%- endif %}
-    - bricks: {{ volume.bricks }}
-    {# Parameter force doesn't exist in Salt 2015.5.2 and without it creation
-    will fail when brick is on root disk #}
-    - force: true
-    - require:
-      - glusterfs: glusterfs_peers
-      - file: {{ volume.storage }}
-
-glusterfs_vol_{{ name }}_start:
-  glusterfs.started:
-    - name: {{ name }}
-    - require:
-      - glusterfs: glusterfs_vol_{{ name }}
-
-{%- if volume.options is defined %}
-{%- for key, value in volume.options.iteritems() %}
-
-glusterfs_vol_{{ name }}_{{ key }}:
-  cmd.run:
-    - name: "gluster volume set '{{ name }}' '{{ key }}' '{{ value }}'"
-    - unless: "gluster volume info '{{ name }}' | grep '{{ key }}: {{ value }}'"
-    - require:
-      - glusterfs: glusterfs_vol_{{ name }}
-    - require_in:
-      - glusterfs: glusterfs_vol_{{ name }}_start
-
-{%- endfor %}
-{%- endif %}
-
-{%- endfor %}
-{%- endif %}
-
-{%- endif %}
diff --git a/glusterfs/server/init.sls b/glusterfs/server/init.sls
new file mode 100644
index 0000000..695008c
--- /dev/null
+++ b/glusterfs/server/init.sls
@@ -0,0 +1,3 @@
+include:
+- glusterfs.server.service
+- glusterfs.server.setup
diff --git a/glusterfs/server/service.sls b/glusterfs/server/service.sls
new file mode 100644
index 0000000..1e39540
--- /dev/null
+++ b/glusterfs/server/service.sls
@@ -0,0 +1,25 @@
+{% from "glusterfs/map.jinja" import server with context %}
+
+{%- if server.enabled %}
+
+glusterfs_packages:
+  pkg.installed:
+    - names: {{ server.pkgs }}
+
+glusterfs_service:
+  service.running:
+    - name: {{ server.service }}
+    - require:
+      - pkg: glusterfs_packages
+
+{%- if server.volumes is defined %}
+{%- for name, volume in server.volumes.iteritems() %}
+
+{{ volume.storage }}:
+  file.directory:
+    - makedirs: true
+
+{%- endfor %}
+{%- endif %}
+
+{%- endif %}
diff --git a/glusterfs/server/setup.sls b/glusterfs/server/setup.sls
new file mode 100644
index 0000000..93af261
--- /dev/null
+++ b/glusterfs/server/setup.sls
@@ -0,0 +1,91 @@
+{% from "glusterfs/map.jinja" import server with context %}
+
+{%- if grains['saltversion'] < "2015.5.4" %}
+{# Parameter force doesn't exist in Salt 2015.5.3 and without it volume
+creation will fail when brick is on root partition #}
+{% set force_compatibility = True %}
+{%- else %}
+{% set force_compatibility = False %}
+{%- endif %}
+
+{%- if server.enabled %}
+
+include:
+- glusterfs.server.service
+
+{%- if server.peers is defined %}
+
+glusterfs_peers:
+    glusterfs.peered:
+      - names: {{ server.peers }}
+      - require:
+        - service: glusterfs_service
+
+{%- endif %}
+
+{%- if server.volumes is defined %}
+{%- for name, volume in server.volumes.iteritems() %}
+
+{%- if force_compatibility %}
+
+glusterfs_vol_{{ name }}:
+  cmd.run:
+    - name: |
+        gluster volume create {{ name }}
+        {%- if volume.replica is defined %} replica {{ volume.replica }} \{% endif %}
+        {%- if volume.stripe is defined %} stripe {{ volume.stripe }} \{% endif %}
+        {{ volume.bricks|join(' ') }} force
+    - unless: "gluster volume info {{ name }}"
+
+{%- else %}
+
+glusterfs_vol_{{ name }}:
+  glusterfs.created:
+    - name: {{ name }}
+    {%- if volume.replica is defined %}
+    - replica: {{ volume.replica }}
+    {%- endif %}
+    {%- if volume.stripe is defined %}
+    - stripe: {{ volume.stripe }}
+    {%- endif %}
+    - bricks: {{ volume.bricks }}
+    - force: true
+    - require:
+      - glusterfs: glusterfs_peers
+      - file: {{ volume.storage }}
+
+{%- endif %}
+
+glusterfs_vol_{{ name }}_start:
+  glusterfs.started:
+    - name: {{ name }}
+    - require:
+      {%- if force_compatibility %}
+      - cmd: glusterfs_vol_{{ name }}
+      {%- else %}
+      - glusterfs: glusterfs_vol_{{ name }}
+      {%- endif %}
+
+{%- if volume.options is defined %}
+{%- for key, value in volume.options.iteritems() %}
+
+glusterfs_vol_{{ name }}_{{ key }}:
+  cmd.run:
+    - name: "gluster volume set '{{ name }}' '{{ key }}' '{{ value }}'"
+    - unless: "gluster volume info '{{ name }}' | grep '{{ key }}: {{ value }}'"
+    - require:
+      {%- if force_compatibility %}
+      - cmd: glusterfs_vol_{{ name }}
+      {%- else %}
+      - glusterfs: glusterfs_vol_{{ name }}
+      {%- endif %}
+    - require_in:
+      - glusterfs: glusterfs_vol_{{ name }}_start
+
+{%- endfor %}
+{%- endif %}
+
+{%- endfor %}
+{%- endif %}
+
+{%- endif %}