diff --git a/ceph/setup/keyring.sls b/ceph/setup/keyring.sls
index 9dce69b..d51a109 100644
--- a/ceph/setup/keyring.sls
+++ b/ceph/setup/keyring.sls
@@ -2,18 +2,18 @@
 
 {% if not common.get('container_mode', False) %}
 
-{# run only if ceph cluster is present #}
-{%- for node_name, node_grains in salt['mine.get']('ceph:common:keyring:admin', 'grains.items', 'pillar').iteritems() %}
+  {# run only if ceph cluster is present #}
+  {%- for node_name, node_grains in salt['mine.get']('ceph:common:keyring:admin', 'grains.items', 'pillar').iteritems() %}
 
-{%- if node_grains.ceph is defined and node_grains.ceph.ceph_keyring is defined and node_grains.ceph.ceph_keyring.admin is defined and node_grains.ceph.get('fsid', '') == common.fsid %}
+    {%- if node_grains.ceph is defined and node_grains.ceph.ceph_keyring is defined and node_grains.ceph.ceph_keyring.admin is defined and node_grains.ceph.get('fsid', '') == common.fsid %}
 
-{%- if loop.index0 == 0 %}
+      {%- if loop.index0 == 0 %}
 
-{% for keyring_name, keyring in common.get('keyring', {}).iteritems() %}
+        {% for keyring_name, keyring in common.get('keyring', {}).iteritems() %}
 
-{%- if keyring.name is defined %}
+          {%- if keyring.name is defined %}
 
-{%- if keyring.name != 'admin' and keyring.key is defined and common.get("manage_keyring", False) %}
+            {%- if keyring.name != 'admin' and keyring.key is defined and common.get("manage_keyring", False) %}
 
 {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring:
   file.managed:
@@ -35,33 +35,33 @@
   - onchanges:
     - file: {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring
 
-{%- elif keyring.name != 'admin' %}
+            {%- elif keyring.name != 'admin' %}
 
 ceph_create_keyring_{{ keyring.name }}:
   cmd.run:
   - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth get-or-create client.{{ keyring.name }} {%- for cap_name, cap in  keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %} > {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring
   - unless: "test -f {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring.name }}.keyring"
 
-{%- if salt['file.file_exists']('/usr/bin/ceph') %}
-{%- set caps = salt['cmd.shell']('ceph auth list --format json') | load_json %}
-{%- for client in caps['auth_dump'] %}
-{%- if client['entity'] == "client." + keyring.name %}
-{%- for cap_name, cap in  client.caps.iteritems() %}
-{%- if cap != keyring.caps[cap_name] %}
+              {%- if salt['file.file_exists']('/usr/bin/ceph') %}
+                {%- set caps = salt['cmd.shell']('ceph auth list --format json') | load_json %}
+                {%- for client in caps['auth_dump'] %}
+                  {%- if client['entity'] == "client." + keyring.name %}
+                    {%- for cap_name, cap in  client.caps.iteritems() %}
+                      {%- if cap != keyring.caps[cap_name] %}
 ceph_update_caps_for_{{ keyring.name }}:
   cmd.run:
   - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth caps client.{{ keyring.name }} {%- for cap_name, cap in  keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
-{%- endif %}
-{%- endfor %}
-{%- endif %}
-{%- endfor %}
-{%- endif %}
+                      {%- endif %}
+                    {%- endfor %}
+                  {%- endif %}
+                {%- endfor %}
+              {%- endif %}
 
-{%- endif %}
+            {%- endif %}
 
-{%- else %}
+          {%- else %}
 
-{%- if keyring_name != 'admin' and keyring.key is defined and common.get("manage_keyring", False) %}
+            {%- if keyring_name != 'admin' and keyring.key is defined and common.get("manage_keyring", False) %}
 
 {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring:
   file.managed:
@@ -83,38 +83,38 @@
   - onchanges:
     - file: {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring
 
-{%- elif keyring_name != 'admin' %}
+            {%- elif keyring_name != 'admin' %}
 
 ceph_create_keyring_{{ keyring_name }}:
   cmd.run:
   - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth get-or-create client.{{ keyring_name }} {%- for cap_name, cap in  keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %} > {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring
   - unless: "test -f {{ common.prefix_dir }}/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.{{ keyring_name }}.keyring"
 
-{%- if salt['file.file_exists']('/usr/bin/ceph') %}
-{%- set caps = salt['cmd.shell']('ceph auth list --format json') | load_json %}
-{%- for client in caps['auth_dump'] %}
-{%- if client['entity'] == "client." + keyring_name %}
-{%- for cap_name, cap in  client.caps.iteritems() %}
-{%- if cap != keyring.caps[cap_name] %}
+              {%- if salt['file.file_exists']('/usr/bin/ceph') %}
+                {%- set caps = salt['cmd.shell']('ceph auth list --format json') | load_json %}
+                {%- for client in caps['auth_dump'] %}
+                  {%- if client['entity'] == "client." + keyring_name %}
+                    {%- for cap_name, cap in  client.caps.iteritems() %}
+                      {%- if cap != keyring.caps[cap_name] %}
 ceph_update_caps_for_{{ keyring_name }}:
   cmd.run:
   - name: ceph -c /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf auth caps client.{{ keyring_name }} {%- for cap_name, cap in  keyring.caps.iteritems() %} {{ cap_name }} '{{ cap }}' {%- endfor %}
-{%- endif %}
-{%- endfor %}
-{%- endif %}
-{%- endfor %}
-{%- endif %}
+                      {%- endif %}
+                    {%- endfor %}
+                  {%- endif %}
+                {%- endfor %}
+              {%- endif %}
 
-{%- endif %}
+            {%- endif %}
 
-{%- endif %}
+          {%- endif %}
 
-{% endfor %}
+        {% endfor %}
 
-{%- endif %}
+      {%- endif %}
 
-{%- endif %}
+    {%- endif %}
 
-{%- endfor %}
+  {%- endfor %}
 
 {%- endif %}
