diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 71f86f5d9edb5367e186dea5e5d347c0c583dfb7..73e11047ccef834cb019e7f2f37922e0162e9733 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -348,6 +348,13 @@ glance_backend_ceph: "{{ enable_ceph }}"
 ceilometer_database_type: "mongodb"
 
 
+#################
+# Gnocchi options
+#################
+# Vaid options are [file, ceph]
+gnocchi_backend_storage: "{{ 'ceph' if enable_ceph|bool else 'file' }}"
+
+
 #################################
 # Cinder options
 #################################
@@ -391,6 +398,7 @@ ceph_pool_type: "replicated"
 ceph_cinder_pool_name: "volumes"
 ceph_cinder_backup_pool_name: "backups"
 ceph_glance_pool_name: "images"
+ceph_gnocchi_pool_name: "gnocchi"
 ceph_nova_pool_name: "vms"
 
 ceph_erasure_profile: "k=4 m=2 ruleset-failure-domain=host"
diff --git a/ansible/roles/gnocchi/defaults/main.yml b/ansible/roles/gnocchi/defaults/main.yml
index 3dacdee6ba9ccad31fd8fe58443922981c508cf4..cd80d1695d2998cf98da45a71891e8727bb5844b 100644
--- a/ansible/roles/gnocchi/defaults/main.yml
+++ b/ansible/roles/gnocchi/defaults/main.yml
@@ -2,6 +2,19 @@
 project_name: "gnocchi"
 
 
+####################
+# Ceph
+####################
+ceph_gnocchi_pool_type: "{{ ceph_pool_type }}"
+ceph_gnocchi_cache_mode: "{{ ceph_cache_mode }}"
+
+# Due to Ansible issues on include, you cannot override these variables. Please
+# override the variables they reference instead.
+gnocchi_pool_name: "{{ ceph_gnocchi_pool_name }}"
+gnocchi_pool_type: "{{ ceph_gnocchi_pool_type }}"
+gnocchi_cache_mode: "{{ ceph_gnocchi_cache_mode }}"
+
+
 ####################
 # Database
 ####################
diff --git a/ansible/roles/gnocchi/tasks/ceph.yml b/ansible/roles/gnocchi/tasks/ceph.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e5c6d9a1694488c4aa65765e638e9b42edad3d9d
--- /dev/null
+++ b/ansible/roles/gnocchi/tasks/ceph.yml
@@ -0,0 +1,45 @@
+---
+- name: Ensuring config directory exists
+  file:
+    path: "{{ node_config_directory }}/{{ item }}"
+    state: "directory"
+  when: inventory_hostname in groups[item]
+  with_items:
+    - "gnocchi-api"
+    - "gnocchi-metricd"
+    - "gnocchi-statsd"
+
+- name: Copying over config(s)
+  template:
+    src: roles/ceph/templates/ceph.conf.j2
+    dest: "{{ node_config_directory }}/{{ item }}/ceph.conf"
+  when: inventory_hostname in groups[item]
+  with_items:
+    - "gnocchi-api"
+    - "gnocchi-metricd"
+    - "gnocchi-statsd"
+
+- include: ../../ceph_pools.yml
+  vars:
+    pool_name: "{{ gnocchi_pool_name }}"
+    pool_type: "{{ gnocchi_pool_type }}"
+    cache_mode: "{{ gnocchi_cache_mode }}"
+
+# TODO(SamYaple): Improve changed_when tests
+- name: Pulling cephx keyring
+  command: docker exec ceph_mon ceph auth get-or-create client.gnocchi mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool={{ ceph_gnocchi_pool_name }}, allow rwx pool={{ ceph_gnocchi_pool_name }}-cache'
+  register: cephx_key
+  delegate_to: "{{ groups['ceph-mon'][0] }}"
+  changed_when: False
+  run_once: True
+
+- name: Pushing cephx keyring
+  copy:
+    content: "{{ cephx_key.stdout }}\n\r"
+    dest: "{{ node_config_directory }}/{{ item }}/ceph.client.gnocchi.keyring"
+    mode: "0600"
+  when: inventory_hostname in groups[item]
+  with_items:
+    - "gnocchi-api"
+    - "gnocchi-metricd"
+    - "gnocchi-statsd"
diff --git a/ansible/roles/gnocchi/tasks/deploy.yml b/ansible/roles/gnocchi/tasks/deploy.yml
index df3d43d96d679211d59c570095157174a3718a1e..0fb27eca91b248e0264f1606285bcaead178d815 100644
--- a/ansible/roles/gnocchi/tasks/deploy.yml
+++ b/ansible/roles/gnocchi/tasks/deploy.yml
@@ -1,4 +1,14 @@
 ---
+- include: ceph.yml
+  when:
+    - enable_ceph|bool
+    - gnocchi_backend_storage == 'ceph'
+
+- include: external_ceph.yml
+  when:
+    - enable_ceph|bool == False
+    - gnocchi_backend_storage == 'ceph'
+
 - include: register.yml
   when: inventory_hostname in groups['gnocchi-api']
 
diff --git a/ansible/roles/gnocchi/tasks/external_ceph.yml b/ansible/roles/gnocchi/tasks/external_ceph.yml
new file mode 100644
index 0000000000000000000000000000000000000000..623ed80079936c045d42b2103f5e61f35886b274
--- /dev/null
+++ b/ansible/roles/gnocchi/tasks/external_ceph.yml
@@ -0,0 +1,30 @@
+---
+- name: Ensuring config directory exists
+  file:
+    path: "{{ node_config_directory }}/{{ item }}"
+    state: "directory"
+  when: inventory_hostname in groups[item]
+  with_items:
+    - "gnocchi-api"
+    - "gnocchi-metricd"
+    - "gnocchi-statsd"
+
+- name: Copy over ceph.conf file
+  copy:
+    src: "{{ node_custom_config }}/{{ item }}/ceph.conf"
+    dest: "{{ node_config_directory }}/{{ item }}/ceph.conf"
+  when: inventory_hostname in groups[item]
+  with_items:
+    - "gnocchi-api"
+    - "gnocchi-metricd"
+    - "gnocchi-statsd"
+
+- name: Copy over ceph gnocchi keyring
+  copy:
+    src: "{{ node_custom_config }}/{{ item }}/ceph.client.gnocchi.keyring"
+    dest: "{{ node_config_directory }}/{{ item }}/ceph.client.gnocchi.keryring"
+  when: inventory_hostname in groups[item]
+  with_items:
+    - "gnocchi-api"
+    - "gnocchi-metricd"
+    - "gnocchi-statsd"
diff --git a/ansible/roles/gnocchi/templates/gnocchi-api.json.j2 b/ansible/roles/gnocchi/templates/gnocchi-api.json.j2
index 2e5749f51cb940f5716efb5020a74eb464baff0a..373cb2154b4a68c564495d13352f27362e9f87bd 100644
--- a/ansible/roles/gnocchi/templates/gnocchi-api.json.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi-api.json.j2
@@ -20,7 +20,19 @@
             "dest": "/etc/{{ gnocchi_dir }}/wsgi-gnocchi.conf",
             "owner": "gnocchi",
             "perm": "0644"
-        }
+        }{% if gnocchi_backend_storage == 'ceph' %},
+        {
+            "source": "{{ container_config_directory }}/ceph.conf",
+            "dest": "/etc/ceph/ceph.conf",
+            "owner": "gnocchi",
+            "perm": "0600"
+        },
+        {
+            "source": "{{ container_config_directory }}/ceph.client.gnocchi.keyring",
+            "dest": "/etc/ceph/ceph.client.gnocchi.keyring",
+            "owner": "gnocchi",
+            "perm": "0600"
+        }{% endif %}
 
     ]
 }
diff --git a/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2 b/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2
index b4bfc3f29b24244439ff4f43fd3fab9a1a132b3a..1d41f8e790de0e3f653d220e9c12eabc15362858 100644
--- a/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi-metricd.json.j2
@@ -6,6 +6,18 @@
             "dest": "/etc/gnocchi/gnocchi.conf",
             "owner": "gnocchi",
             "perm": "0600"
-        }
+        }{% if gnocchi_backend_storage == 'ceph' %},
+        {
+            "source": "{{ container_config_directory }}/ceph.conf",
+            "dest": "/etc/ceph/ceph.conf",
+            "owner": "gnocchi",
+            "perm": "0600"
+        },
+        {
+            "source": "{{ container_config_directory }}/ceph.client.gnocchi.keyring",
+            "dest": "/etc/ceph/ceph.client.gnocchi.keyring",
+            "owner": "gnocchi",
+            "perm": "0600"
+        }{% endif %}
     ]
 }
diff --git a/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2 b/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2
index c2c07f9d1c98f2e1698abecd132df54f0c976947..141e05f7f92b3bb52018919dc7859ae2110a45a9 100644
--- a/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi-statsd.json.j2
@@ -6,6 +6,18 @@
             "dest": "/etc/gnocchi/gnocchi.conf",
             "owner": "gnocchi",
             "perm": "0600"
-        }
+        }{% if gnocchi_backend_storage == 'ceph' %},
+        {
+            "source": "{{ container_config_directory }}/ceph.conf",
+            "dest": "/etc/ceph/ceph.conf",
+            "owner": "gnocchi",
+            "perm": "0600"
+        },
+        {
+            "source": "{{ container_config_directory }}/ceph.client.gnocchi.keyring",
+            "dest": "/etc/ceph/ceph.client.gnocchi.keyring",
+            "owner": "gnocchi",
+            "perm": "0600"
+        }{% endif %}
     ]
 }
diff --git a/ansible/roles/gnocchi/templates/gnocchi.conf.j2 b/ansible/roles/gnocchi/templates/gnocchi.conf.j2
index 6493343b0b595c6f5c583dd68ccc2fdfaa0533d0..30d8e33c1c9c2f972f041b8bdd8997db5266f7a3 100644
--- a/ansible/roles/gnocchi/templates/gnocchi.conf.j2
+++ b/ansible/roles/gnocchi/templates/gnocchi.conf.j2
@@ -44,5 +44,13 @@ 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 %}
 
 [storage]
+{% if gnocchi_backend_storage == 'file' %}
 driver = file
 file_basepath = /var/lib/gnocchi
+{% elif gnocchi_backend_storage == 'ceph' %}
+driver = ceph
+ceph_pool = {{ gnocchi_pool_name }}
+ceph_username = gnocchi
+ceph_keyring = /etc/ceph/ceph.client.gnocchi.keyring
+ceph_conffile = /etc/ceph/ceph.conf
+{% endif %}
diff --git a/docker/gnocchi/gnocchi-base/Dockerfile.j2 b/docker/gnocchi/gnocchi-base/Dockerfile.j2
index 213a3a610d81e341cd82d834748869517d3f6837..1986ca703312ec72cff07c0c0d1c8d8c953c2eba 100644
--- a/docker/gnocchi/gnocchi-base/Dockerfile.j2
+++ b/docker/gnocchi/gnocchi-base/Dockerfile.j2
@@ -13,7 +13,8 @@ MAINTAINER {{ maintainer }}
             'python-gnocchiclient',
             'httpd',
             'mod_wsgi',
-            'python-ldappool'
+            'python-ldappool',
+            'python-rados'
         ] %}
 
 {{ macros.install_packages(gnocchi_base_packages | customizable("packages")) }}
@@ -24,7 +25,8 @@ RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf
             'gnocchi-common',
             'apache2',
             'libapache2-mod-wsgi',
-            'python-ldappool'
+            'python-ldappool',
+            'python-rados'
         ] %}
 
 {{ macros.install_packages(gnocchi_base_packages | customizable("packages")) }}
@@ -37,7 +39,8 @@ RUN truncate -s 0 /etc/apache2/ports.conf
        {% set gnocchi_base_packages = [
             'httpd',
             'mod_wsgi',
-            'python-ldappool'
+            'python-ldappool',
+            'python-rados'
         ] %}
 {{ macros.install_packages(gnocchi_base_packages | customizable("packages")) }}
 RUN mkdir -p /var/www/cgi-bin/gnocchi \
@@ -47,7 +50,8 @@ RUN mkdir -p /var/www/cgi-bin/gnocchi \
        {% set gnocchi_base_packages = [
             'apache2',
             'libapache2-mod-wsgi',
-            'python-ldappool'
+            'python-ldappool',
+            'python-rados'
         ] %}
 
 {{ macros.install_packages(gnocchi_base_packages | customizable("packages")) }}
@@ -58,7 +62,7 @@ ADD gnocchi-base-archive /gnocchi-base-source
 
 RUN ln -s gnocchi-base-source/* gnocchi \
     && useradd --user-group gnocchi \
-    && /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt gnocchiclient /gnocchi[keystone,mysql,file] \
+    && /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt gnocchiclient /gnocchi[keystone,mysql,file,ceph] \
     && mkdir -p /etc/gnocchi /var/log/kolla/gnocchi /home/gnocchi \
     && cp -r /gnocchi/etc/gnocchi/* /etc/gnocchi/ \
     && chown -R gnocchi: /etc/gnocchi /var/log/kolla/gnocchi
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index bfb3d7d5070273f4212dfb2f07ebb446e71b6925..be588e7e0d8653ae59d3c61c0d2ce63a12015eec 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -192,6 +192,14 @@ kolla_internal_vip_address: "10.10.10.254"
 # Valid options are [ mongodb, mysql ]
 #ceilometer_database_type: "mongodb"
 
+
+#######################
+# Gnocchi options
+#######################
+# Valid options are [ file, ceph ]
+#gnocchi_backend_storage: "{{ 'ceph' if enable_ceph|bool else 'file' }}"
+
+
 #######################
 # Cinder options
 #######################
diff --git a/releasenotes/notes/integrate-gnocchi-with-ceph-a6d5f81f4d8b0391.yaml b/releasenotes/notes/integrate-gnocchi-with-ceph-a6d5f81f4d8b0391.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..da5c95e49d088ebc34be87f6a5a359883b064f51
--- /dev/null
+++ b/releasenotes/notes/integrate-gnocchi-with-ceph-a6d5f81f4d8b0391.yaml
@@ -0,0 +1,3 @@
+---
+fixes:
+  - Integrates gnocchi with ceph to resolve the the lack of HA.