diff --git a/ansible/roles/ceilometer/handlers/main.yml b/ansible/roles/ceilometer/handlers/main.yml
index 54807b0106b375e343950de6c460f81e24a86f72..598d89f7d7d2b342dfdac817ab59a67ea26a438b 100644
--- a/ansible/roles/ceilometer/handlers/main.yml
+++ b/ansible/roles/ceilometer/handlers/main.yml
@@ -6,7 +6,7 @@
     config_json: "{{ ceilometer_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_conf: "{{ ceilometer_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_pipeline: "{{ ceilometer_pipelines.results|selectattr('item.key', 'equalto', service_name)|first }}"
-    policy_json: "{{ ceilometer_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ ceilometer_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_notification_container: "{{ check_ceilometer_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
     panko_conf: "{{ panko_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
   kolla_docker:
@@ -21,7 +21,7 @@
     - service.enabled | bool
     - config_json.changed | bool
       or ceilometer_conf.changed | bool
-      or policy_json.changed | bool
+      or policy_overwriting.changed | bool
       or ceilometer_events.changed | bool
       or ceilometer_pipeline.changed | bool
       or ceilometer_notification_container.changed | bool
@@ -34,7 +34,7 @@
     config_json: "{{ ceilometer_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_conf: "{{ ceilometer_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_pipeline: "{{ ceilometer_pipelines.results|selectattr('item.key', 'equalto', service_name)|first }}"
-    policy_json: "{{ ceilometer_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ ceilometer_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_central_container: "{{ check_ceilometer_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   kolla_docker:
     action: "recreate_or_restart_container"
@@ -49,7 +49,7 @@
     - config_json.changed | bool
       or ceilometer_conf.changed | bool
       or ceilometer_pipeline.changed | bool
-      or policy_json.changed | bool
+      or policy_overwriting.changed | bool
       or ceilometer_central_container.changed | bool
 
 - name: Restart ceilometer-compute container
@@ -59,7 +59,7 @@
     config_json: "{{ ceilometer_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_conf: "{{ ceilometer_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_pipeline: "{{ ceilometer_pipelines.results|selectattr('item.key', 'equalto', service_name)|first }}"
-    policy_json: "{{ ceilometer_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ ceilometer_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     ceilometer_compute_container: "{{ check_ceilometer_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   kolla_docker:
     action: "recreate_or_restart_container"
@@ -75,6 +75,6 @@
     - config_json.changed | bool
       or ceilometer_conf.changed | bool
       or ceilometer_pipeline.changed | bool
-      or policy_json.changed | bool
+      or policy_overwriting.changed | bool
       or vcenter_ca_file.changed | bool
       or ceilometer_compute_container.changed | bool
diff --git a/ansible/roles/ceilometer/tasks/config.yml b/ansible/roles/ceilometer/tasks/config.yml
index 23664fd6d6c190e96630b9c90dfb240147ed5ab8..64efe47ef92eb62739dc1eb26b6a508583be3240 100644
--- a/ansible/roles/ceilometer/tasks/config.yml
+++ b/ansible/roles/ceilometer/tasks/config.yml
@@ -9,6 +9,23 @@
     - item.value.enabled | bool
   with_dict: "{{ ceilometer_services }}"
 
+- name: Check if policies shall be overwritten
+  local_action: stat path="{{ item }}"
+  run_once: True
+  register: ceilometer_policy
+  with_first_found:
+    - files: "{{ supported_policy_format_list }}"
+      paths:
+        - "{{ node_custom_config }}/ceilometer/"
+      skip: true
+
+- name: Set ceilometer policy file
+  set_fact:
+    ceilometer_policy_file: "{{ ceilometer_policy.results.0.stat.path | basename }}"
+    ceilometer_policy_file_path: "{{ ceilometer_policy.results.0.stat.path }}"
+  when:
+    - ceilometer_policy.results
+
 - name: Copying over config.json files for services
   template:
     src: "{{ item.key }}.json.j2"
@@ -115,18 +132,13 @@
   notify:
     - Restart ceilometer-compute container
 
-- name: Check if policies shall be overwritten
-  local_action: stat path="{{ node_custom_config }}/ceilometer/policy.json"
-  run_once: True
-  register: ceilometer_policy
-
-- name: Copying over existing policy.json
+- name: Copying over existing policy file
   template:
-    src: "{{ node_custom_config }}/ceilometer/policy.json"
-    dest: "{{ node_config_directory }}/{{ item.key }}/policy.json"
-  register: ceilometer_policy_jsons
+    src: "{{ ceilometer_policy_file_path }}"
+    dest: "{{ node_config_directory }}/{{ item.key }}/{{ ceilometer_policy_file }}"
+  register: policy_jsons
   when:
-    - ceilometer_policy.stat.exists
+    - ceilometer_policy_file is defined
     - inventory_hostname in groups[item.value.group]
     - item.value.enabled | bool
   with_dict: "{{ ceilometer_services }}"
diff --git a/ansible/roles/ceilometer/templates/ceilometer-central.json.j2 b/ansible/roles/ceilometer/templates/ceilometer-central.json.j2
index 260ad50497027a6e3bb030dcf5cb73df18baa6bf..277eae3baffdb375d6378bde2da60581cbe2bafd 100644
--- a/ansible/roles/ceilometer/templates/ceilometer-central.json.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer-central.json.j2
@@ -6,14 +6,13 @@
             "dest": "/etc/ceilometer/ceilometer.conf",
             "owner": "ceilometer",
             "perm": "0600"
-        },
+        }{% if ceilometer_policy_file is defined %},
         {
-            "source": "{{ container_config_directory }}/policy.json",
-            "dest": "/etc/ceilometer/policy.json",
+            "source": "{{ container_config_directory }}/{{ ceilometer_policy_file }}",
+            "dest": "/etc/ceilometer/{{ ceilometer_policy_file }}",
             "owner": "ceilometer",
-            "perm": "0600",
-            "optional": true
-        },
+            "perm": "0600"
+        }{% endif %},
         {
             "source": "{{ container_config_directory }}/pipeline.yaml",
             "dest": "/etc/ceilometer/pipeline.yaml",
diff --git a/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2 b/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2
index 6ba32f5e47ccea7ed68a0508bbe6e1b666e710d2..9a27ae7a9d90607c71456ea90389063f1df81878 100644
--- a/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2
@@ -6,14 +6,13 @@
             "dest": "/etc/ceilometer/ceilometer.conf",
             "owner": "ceilometer",
             "perm": "0600"
-        },
+        }{% if ceilometer_policy_file is defined %},
         {
-            "source": "{{ container_config_directory }}/policy.json",
-            "dest": "/etc/ceilometer/policy.json",
+            "source": "{{ container_config_directory }}/{{ ceilometer_policy_file }}",
+            "dest": "/etc/ceilometer/{{ ceilometer_policy_file }}",
             "owner": "ceilometer",
-            "perm": "0600",
-            "optional": true
-        },
+            "perm": "0600"
+        }{% endif %},
         {
             "source": "{{ container_config_directory }}/pipeline.yaml",
             "dest": "/etc/ceilometer/pipeline.yaml",
diff --git a/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2 b/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2
index 98ccaec0b2a5ebafb7674b3fe2fdccc8701623cc..bad19d97771452129049b6d78cf71b4c0d668df5 100644
--- a/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2
@@ -24,14 +24,13 @@
             "dest": "/etc/ceilometer/pipeline.yaml",
             "owner": "ceilometer",
             "perm": "0600"
-        },
+        }{% if ceilometer_policy_file is defined %},
         {
-            "source": "{{ container_config_directory }}/policy.json",
-            "dest": "/etc/ceilometer/policy.json",
+            "source": "{{ container_config_directory }}/{{ ceilometer_policy_file }}",
+            "dest": "/etc/ceilometer/{{ ceilometer_policy_file }}",
             "owner": "ceilometer",
-            "perm": "0600",
-            "optional": true
-        },
+            "perm": "0600"
+        }{% endif %},
         {
             "source": "{{ container_config_directory }}/panko.conf",
             "dest": "/etc/panko/panko.conf",
diff --git a/ansible/roles/ceilometer/templates/ceilometer.conf.j2 b/ansible/roles/ceilometer/templates/ceilometer.conf.j2
index 7b333633285311997fd7627eaf3127c9a1b5ed1c..5f220546b4c47039d3a15eb816f30ee34e0183c1 100644
--- a/ansible/roles/ceilometer/templates/ceilometer.conf.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer.conf.j2
@@ -52,3 +52,8 @@ ca_file = /etc/ceilometer/vmware_ca
 
 [oslo_messaging_notifications]
 transport_url = {{ notify_transport_url }}
+
+{% if ceilometer_policy_file is defined %}
+[oslo_policy]
+policy_file = {{ ceilometer_policy_file }}
+{% endif %}
diff --git a/ansible/roles/gnocchi/handlers/main.yml b/ansible/roles/gnocchi/handlers/main.yml
index bb8df9430ca1681f163aaa187d21bad4fc0830b2..e6fca5eee2359e725ff8f939964b592f62e79579 100644
--- a/ansible/roles/gnocchi/handlers/main.yml
+++ b/ansible/roles/gnocchi/handlers/main.yml
@@ -5,7 +5,7 @@
     service: "{{ gnocchi_services[service_name] }}"
     config_json: "{{ gnocchi_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     gnocchi_conf: "{{ gnocchi_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
-    policy_json: "{{ gnocchi_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ gnocchi_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     gnocchi_api_container: "{{ check_gnocchi_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   kolla_docker:
     action: "recreate_or_restart_container"
@@ -19,7 +19,7 @@
     - service.enabled | bool
     - config_json.changed | bool
       or gnocchi_conf.changed | bool
-      or policy_json.changed | bool
+      or policy_overwriting.changed | bool
       or gnocchi_wsgi_conf.changed | bool
       or gnocchi_api_container.changed | bool
 
@@ -29,7 +29,7 @@
     service: "{{ gnocchi_services[service_name] }}"
     config_json: "{{ gnocchi_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     gnocchi_conf: "{{ gnocchi_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
-    policy_json: "{{ gnocchi_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ gnocchi_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     gnocchi_metricd_container: "{{ check_gnocchi_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   kolla_docker:
     action: "recreate_or_restart_container"
@@ -43,7 +43,7 @@
     - service.enabled | bool
     - config_json.changed | bool
       or gnocchi_conf.changed | bool
-      or policy_json.changed | bool
+      or policy_overwriting.changed | bool
       or gnocchi_metricd_container.changed | bool
 
 - name: Restart gnocchi-statsd container
@@ -52,7 +52,7 @@
     service: "{{ gnocchi_services[service_name] }}"
     config_json: "{{ gnocchi_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     gnocchi_conf: "{{ gnocchi_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
-    policy_json: "{{ gnocchi_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ gnocchi_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     gnocchi_statsd_container: "{{ check_gnocchi_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   kolla_docker:
     action: "recreate_or_restart_container"
@@ -66,5 +66,5 @@
     - service.enabled | bool
     - config_json.changed | bool
       or gnocchi_conf.changed | bool
-      or policy_json.changed | bool
+      or policy_overwriting.changed | bool
       or gnocchi_statsd_container.changed | bool
diff --git a/ansible/roles/gnocchi/tasks/config.yml b/ansible/roles/gnocchi/tasks/config.yml
index 5c49e3184f3c59603817d096257bda5d47c1cfd4..1f6d47b7884f8315ba6479d320fa047cc7f353dc 100644
--- a/ansible/roles/gnocchi/tasks/config.yml
+++ b/ansible/roles/gnocchi/tasks/config.yml
@@ -9,6 +9,23 @@
     - item.value.enabled | bool
   with_dict: "{{ gnocchi_services }}"
 
+- name: Check if policies shall be overwritten
+  local_action: stat path="{{ item }}"
+  run_once: True
+  register: gnocchi_policy
+  with_first_found:
+    - files: "{{ supported_policy_format_list }}"
+      paths:
+        - "{{ node_custom_config }}/gnocchi/"
+      skip: true
+
+- name: Set gnocchi policy file
+  set_fact:
+    gnocchi_policy_file: "{{ gnocchi_policy.results.0.stat.path | basename }}"
+    gnocchi_policy_file_path: "{{ gnocchi_policy.results.0.stat.path }}"
+  when:
+    - gnocchi_policy.results
+
 - name: Copying over config.json files for services
   template:
     src: "{{ item.key }}.json.j2"
@@ -59,18 +76,13 @@
   notify:
     - Restart gnocchi-api container
 
-- name: Check if policies shall be overwritten
-  local_action: stat path="{{ node_custom_config }}/gnocchi/policy.json"
-  run_once: True
-  register: gnocchi_policy
-
-- name: Copying over existing policy.json
+- name: Copying over existing policy file
   template:
-    src: "{{ node_custom_config }}/gnocchi/policy.json"
-    dest: "{{ node_config_directory }}/{{ item.key }}/policy.json"
-  register: gnocchi_policy_jsons
+    src: "{{ gnocchi_policy_file_path }}"
+    dest: "{{ node_config_directory }}/{{ item.key }}/{{ gnocchi_policy_file }}"
+  register: gnocchi_policy_overwriting
   when:
-    - gnocchi_policy.stat.exists
+    - gnocchi_policy_file is defined
     - inventory_hostname in groups[item.value.group]
     - item.value.enabled | bool
   with_dict: "{{ gnocchi_services }}"
diff --git a/ansible/roles/gnocchi/templates/gnocchi-api.json.j2 b/ansible/roles/gnocchi/templates/gnocchi-api.json.j2
index f7dc1a338c242e825ba52573fd6394ae7fc39741..0e7ce9baffaa33221ffc1930d468ed82b54e22e3 100644
--- a/ansible/roles/gnocchi/templates/gnocchi-api.json.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi-api.json.j2
@@ -14,14 +14,13 @@
             "dest": "/etc/{{ gnocchi_dir }}/wsgi-gnocchi.conf",
             "owner": "gnocchi",
             "perm": "0600"
-        },
+        }{% if gnocchi_policy_file is defined %},
         {
-            "source": "{{ container_config_directory }}/policy.json",
-            "dest": "/etc/gnocchi/policy.json",
+            "source": "{{ container_config_directory }}/{{ gnocchi_policy_file }}",
+            "dest": "/etc/gnocchi/{{ gnocchi_policy_file }}",
             "owner": "gnocchi",
-            "perm": "0600",
-            "optional": true
-        }{% if gnocchi_backend_storage == 'ceph' %},
+            "perm": "0600"
+        }{% endif %}{% if gnocchi_backend_storage == 'ceph' %},
         {
             "source": "{{ container_config_directory }}/ceph.conf",
             "dest": "/etc/ceph/ceph.conf",
diff --git a/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2 b/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2
index 2285095816aea406d337ffcd1705045978841fd7..6d97e2910b4d016e1a4ef7b486d8aeb00f991a71 100644
--- a/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2
@@ -6,14 +6,13 @@
             "dest": "/etc/gnocchi/gnocchi.conf",
             "owner": "gnocchi",
             "perm": "0600"
-        },
+        }{% if gnocchi_policy_file is defined %},
         {
-            "source": "{{ container_config_directory }}/policy.json",
-            "dest": "/etc/gnocchi/policy.json",
+            "source": "{{ container_config_directory }}/{{ gnocchi_policy_file }}",
+            "dest": "/etc/gnocchi/{{ gnocchi_policy_file }}",
             "owner": "gnocchi",
-            "perm": "0600",
-            "optional": true
-        }{% if gnocchi_backend_storage == 'ceph' %},
+            "perm": "0600"
+        }{% endif %}{% if gnocchi_backend_storage == 'ceph' %},
         {
             "source": "{{ container_config_directory }}/ceph.conf",
             "dest": "/etc/ceph/ceph.conf",
diff --git a/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2 b/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2
index 8613c343dbbf249f7480594f7e2193a564982c84..9f76af78f1612fa92d6ee065f109e6b35c24c84b 100644
--- a/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2
@@ -6,14 +6,13 @@
             "dest": "/etc/gnocchi/gnocchi.conf",
             "owner": "gnocchi",
             "perm": "0600"
-        },
+        }{% if gnocchi_policy_file is defined %},
         {
-            "source": "{{ container_config_directory }}/policy.json",
-            "dest": "/etc/gnocchi/policy.json",
+            "source": "{{ container_config_directory }}/{{ gnocchi_policy_file }}",
+            "dest": "/etc/gnocchi/{{ gnocchi_policy_file }}",
             "owner": "gnocchi",
-            "perm": "0600",
-            "optional": true
-        }{% if gnocchi_backend_storage == 'ceph' %},
+            "perm": "0600"
+        }{% endif %}{% if gnocchi_backend_storage == 'ceph' %},
         {
             "source": "{{ container_config_directory }}/ceph.conf",
             "dest": "/etc/ceph/ceph.conf",
diff --git a/ansible/roles/gnocchi/templates/gnocchi.conf.j2 b/ansible/roles/gnocchi/templates/gnocchi.conf.j2
index 40955035bee4df96420fc746ea2d206522d405b4..1b6438b8e577ac28642925edd29f8dadd0203d4b 100644
--- a/ansible/roles/gnocchi/templates/gnocchi.conf.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi.conf.j2
@@ -49,6 +49,11 @@ memcache_security_strategy = ENCRYPT
 memcache_secret_key = {{ memcache_secret_key }}
 memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
 
+{% if gnocchi_policy_file is defined %}
+[oslo_policy]
+policy_file = {{ gnocchi_policy_file }}
+{% endif %}
+
 [storage]
 {% if gnocchi_backend_storage == 'file' %}
 driver = file
diff --git a/ansible/roles/rally/handlers/main.yml b/ansible/roles/rally/handlers/main.yml
index 54fd3118fcd9444720d518f48f0f28c02f049c49..dfb5ab50720bacbc6396d37f5a3d232c39768908 100644
--- a/ansible/roles/rally/handlers/main.yml
+++ b/ansible/roles/rally/handlers/main.yml
@@ -5,7 +5,7 @@
     service: "{{ rally_services[service_name] }}"
     config_json: "{{ rally_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     rally_conf: "{{ rally_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
-    policy_json: "{{ rally_policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ rally_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     rally_container: "{{ check_rally_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   kolla_docker:
     action: "recreate_or_restart_container"
@@ -19,5 +19,5 @@
     - service.enabled | bool
     - config_json.changed | bool
       or rally_conf.changed | bool
-      or policy_json.changed | bool
+      or policy_overwriting.changed | bool
       or rally_container.changed | bool
diff --git a/ansible/roles/rally/tasks/config.yml b/ansible/roles/rally/tasks/config.yml
index c7daee602e1eee8b56a460d9995a676ed8b9f3bd..d82204f7343dcfb18c051718dc27444ae7647b7d 100644
--- a/ansible/roles/rally/tasks/config.yml
+++ b/ansible/roles/rally/tasks/config.yml
@@ -9,6 +9,23 @@
     - item.value.enabled | bool
   with_dict: "{{ rally_services }}"
 
+- name: Check if policies shall be overwritten
+  local_action: stat path="{{ item }}"
+  run_once: True
+  register: rally_policy
+  with_first_found:
+    - files: "{{ supported_policy_format_list }}"
+      paths:
+        - "{{ node_custom_config }}/rally/"
+      skip: true
+
+- name: Set rally policy file
+  set_fact:
+    rally_policy_file: "{{ rally_policy.results.0.stat.path | basename }}"
+    rally_policy_file_path: "{{ rally_policy.results.0.stat.path }}"
+  when:
+    - rally_policy.results
+
 - name: Copying over config.json files for services
   template:
     src: "{{ item.key }}.json.j2"
@@ -37,18 +54,13 @@
   notify:
     - Restart rally container
 
-- name: Check if policies shall be overwritten
-  local_action: stat path="{{ node_custom_config }}/rally/policy.json"
-  run_once: True
-  register: rally_policy
-
-- name: Copying over existing policy.json
+- name: Copying over existing policy file
   template:
-    src: "{{ node_custom_config }}/rally/policy.json"
-    dest: "{{ node_config_directory }}/{{ item.key }}/policy.json"
-  register: rally_policy_jsons
+    src: "{{ rally_policy_file_path }}"
+    dest: "{{ node_config_directory }}/{{ item.key }}/{{ rally_policy_file }}"
+  register: rally_policy_overwriting
   when:
-    - rally_policy.stat.exists
+    - rally_policy_file is defined
     - inventory_hostname in groups[item.value.group]
     - item.value.enabled | bool
   with_dict: "{{ rally_services }}"
diff --git a/ansible/roles/rally/templates/rally.conf.j2 b/ansible/roles/rally/templates/rally.conf.j2
index 853751871be5958b85f4fa9a40996d2b6a55769e..7a43d10406df97e2935e10694e98310976d3d06e 100644
--- a/ansible/roles/rally/templates/rally.conf.j2
+++ b/ansible/roles/rally/templates/rally.conf.j2
@@ -7,3 +7,8 @@ log_dir = /var/log/kolla/rally/
 [database]
 connection = mysql+pymysql://{{ rally_database_user }}:{{ rally_database_password }}@{{ rally_database_address }}/{{ rally_database_name }}
 max_retries = -1
+
+{% if rally_policy_file is defined %}
+[oslo_policy]
+policy_file = {{ rally_policy_file }}
+{% endif %}
diff --git a/ansible/roles/rally/templates/rally.json.j2 b/ansible/roles/rally/templates/rally.json.j2
index 99cf5762535aabb87adfa036686f3b3bbd8e20d0..a8ba2df6dbc498ea37b9828008bdb34f424e74e4 100644
--- a/ansible/roles/rally/templates/rally.json.j2
+++ b/ansible/roles/rally/templates/rally.json.j2
@@ -6,14 +6,13 @@
             "dest": "/etc/rally/rally.conf",
             "owner": "rally",
             "perm": "0600"
-        },
+        }{% if rally_policy_file is defined %},
         {
-            "source": "{{ container_config_directory }}/policy.json",
-            "dest": "/etc/rally/policy.json",
+            "source": "{{ container_config_directory }}/{{ rally_policy_file }}",
+            "dest": "/etc/rally/{{ rally_policy_file }}",
             "owner": "rally",
-            "perm": "0600",
-            "optional": true
-        }
+            "perm": "0600"
+        }{% endif %}
     ],
     "permissions": [
         {