diff --git a/contrib/network-storage/heketi/heketi.yml b/contrib/network-storage/heketi/heketi.yml
index 8ac74b980ff75648399c4fdcbf915b3dea377acc..3ec719e95b7fa4f44207713466c945990f576209 100644
--- a/contrib/network-storage/heketi/heketi.yml
+++ b/contrib/network-storage/heketi/heketi.yml
@@ -3,7 +3,7 @@
   roles:
     - { role: prepare }
 
-- hosts: localhost
+- hosts: kube-master[0]
   tags:
     - "provision"
   roles:
diff --git a/contrib/network-storage/heketi/roles/provision/defaults/main.yml b/contrib/network-storage/heketi/roles/provision/defaults/main.yml
index df38376d182592bd770e675b17ae44e0a5c89a25..ed97d539c095cf1413af30cc23dea272095b97dd 100644
--- a/contrib/network-storage/heketi/roles/provision/defaults/main.yml
+++ b/contrib/network-storage/heketi/roles/provision/defaults/main.yml
@@ -1,2 +1 @@
 ---
-artifacts_dir: "{{ ansible_inventory_sources[0] | dirname }}/artifacts"
diff --git a/contrib/network-storage/heketi/roles/provision/glusterfs-daemonset.json b/contrib/network-storage/heketi/roles/provision/glusterfs-daemonset.json
deleted file mode 100644
index 8f46bea24d04fc54969bb587635ce6168fc5fc7b..0000000000000000000000000000000000000000
--- a/contrib/network-storage/heketi/roles/provision/glusterfs-daemonset.json
+++ /dev/null
@@ -1,144 +0,0 @@
-{
-    "kind": "DaemonSet",
-    "apiVersion": "extensions/v1beta1",
-    "metadata": {
-        "name": "glusterfs",
-        "labels": {
-            "glusterfs": "deployment"
-        },
-        "annotations": {
-            "description": "GlusterFS Daemon Set",
-            "tags": "glusterfs"
-        }
-    },
-    "spec": {
-        "template": {
-            "metadata": {
-                "name": "glusterfs",
-                "labels": {
-                    "glusterfs-node": "daemonset"
-                }
-            },
-            "spec": {
-                "nodeSelector": {
-                    "storagenode" : "glusterfs"
-                },
-                "hostNetwork": true,
-                "containers": [
-                    {
-                        "image": "gluster/gluster-centos:gluster4u0_centos7",
-                        "imagePullPolicy": "Always",
-                        "name": "glusterfs",
-                        "volumeMounts": [
-                            {
-                                "name": "glusterfs-heketi",
-                                "mountPath": "/var/lib/heketi"
-                            },
-                            {
-                                "name": "glusterfs-run",
-                                "mountPath": "/run"
-                            },
-                            {
-                                "name": "glusterfs-lvm",
-                                "mountPath": "/run/lvm"
-                            },
-                            {
-                                "name": "glusterfs-etc",
-                                "mountPath": "/etc/glusterfs"
-                            },
-                            {
-                                "name": "glusterfs-logs",
-                                "mountPath": "/var/log/glusterfs"
-                            },
-                            {
-                                "name": "glusterfs-config",
-                                "mountPath": "/var/lib/glusterd"
-                            },
-                            {
-                                "name": "glusterfs-dev",
-                                "mountPath": "/dev"
-                            },
-                            {
-                                "name": "glusterfs-cgroup",
-                                "mountPath": "/sys/fs/cgroup"
-                            }
-                        ],
-                        "securityContext": {
-                            "capabilities": {},
-                            "privileged": true
-                        },
-                        "readinessProbe": {
-                            "timeoutSeconds": 3,
-                            "initialDelaySeconds": 60,
-                            "exec": {
-                                "command": [
-                                    "/bin/bash",
-                                    "-c",
-                                    "systemctl status glusterd.service"
-                                ]
-                            }
-                        },
-                        "livenessProbe": {
-                            "timeoutSeconds": 3,
-                            "initialDelaySeconds": 60,
-                            "exec": {
-                                "command": [
-                                    "/bin/bash",
-                                    "-c",
-                                    "systemctl status glusterd.service"
-                                ]
-                            }
-                        }
-                    }
-                ],
-                "volumes": [
-                    {
-                        "name": "glusterfs-heketi",
-                        "hostPath": {
-                            "path": "/var/lib/heketi"
-                        }
-                    },
-                    {
-                        "name": "glusterfs-run"
-                    },
-                    {
-                        "name": "glusterfs-lvm",
-                        "hostPath": {
-                            "path": "/run/lvm"
-                        }
-                    },
-                    {
-                        "name": "glusterfs-etc",
-                        "hostPath": {
-                            "path": "/etc/glusterfs"
-                        }
-                    },
-                    {
-                        "name": "glusterfs-logs",
-                        "hostPath": {
-                            "path": "/var/log/glusterfs"
-                        }
-                    },
-                    {
-                        "name": "glusterfs-config",
-                        "hostPath": {
-                            "path": "/var/lib/glusterd"
-                        }
-                    },
-                    {
-                        "name": "glusterfs-dev",
-                        "hostPath": {
-                            "path": "/dev"
-                        }
-                    },
-                    {
-                        "name": "glusterfs-cgroup",
-                        "hostPath": {
-                            "path": "/sys/fs/cgroup"
-                        }
-                    }
-                ]
-            }
-        }
-    }
-}
diff --git a/contrib/network-storage/heketi/roles/provision/heketi-bootstrap.json b/contrib/network-storage/heketi/roles/provision/heketi-bootstrap.json
deleted file mode 100644
index bdcf3e9588f38fc816b7de49fc26f1f7da61fa86..0000000000000000000000000000000000000000
--- a/contrib/network-storage/heketi/roles/provision/heketi-bootstrap.json
+++ /dev/null
@@ -1,133 +0,0 @@
-{
-  "kind": "List",
-  "apiVersion": "v1",
-  "items": [
-    {
-      "kind": "Service",
-      "apiVersion": "v1",
-      "metadata": {
-        "name": "deploy-heketi",
-        "labels": {
-          "glusterfs": "heketi-service",
-          "deploy-heketi": "support"
-        },
-        "annotations": {
-          "description": "Exposes Heketi Service"
-        }
-      },
-      "spec": {
-        "selector": {
-          "name": "deploy-heketi"
-        },
-        "ports": [
-          {
-            "name": "deploy-heketi",
-            "port": 8080,
-            "targetPort": 8080
-          }
-        ]
-      }
-    },
-    {
-      "kind": "Deployment",
-      "apiVersion": "extensions/v1beta1",
-      "metadata": {
-        "name": "deploy-heketi",
-        "labels": {
-          "glusterfs": "heketi-deployment",
-          "deploy-heketi": "deployment"
-        },
-        "annotations": {
-          "description": "Defines how to deploy Heketi"
-        }
-      },
-      "spec": {
-        "replicas": 1,
-        "template": {
-          "metadata": {
-            "name": "deploy-heketi",
-            "labels": {
-              "name": "deploy-heketi",
-              "glusterfs": "heketi-pod",
-              "deploy-heketi": "pod"
-            }
-          },
-          "spec": {
-            "serviceAccountName": "heketi-service-account",
-            "containers": [
-              {
-                "image": "heketi/heketi:7",
-                "imagePullPolicy": "Always",
-                "name": "deploy-heketi",
-                "env": [
-                  {
-                    "name": "HEKETI_EXECUTOR",
-                    "value": "kubernetes"
-                  },
-                  {
-                    "name": "HEKETI_DB_PATH",
-                    "value": "/var/lib/heketi/heketi.db"
-                  },
-                  {
-                    "name": "HEKETI_FSTAB",
-                    "value": "/var/lib/heketi/fstab"
-                  },
-                  {
-                    "name": "HEKETI_SNAPSHOT_LIMIT",
-                    "value": "14"
-                  },
-                  {
-                    "name": "HEKETI_KUBE_GLUSTER_DAEMONSET",
-                    "value": "y"
-                  }
-                ],
-                "ports": [
-                  {
-                    "containerPort": 8080
-                  }
-                ],
-                "volumeMounts": [
-                  {
-                    "name": "db",
-                    "mountPath": "/var/lib/heketi"
-                  },
-                  {
-                    "name": "config",
-                    "mountPath": "/etc/heketi"
-                  }
-                ],
-                "readinessProbe": {
-                  "timeoutSeconds": 3,
-                  "initialDelaySeconds": 3,
-                  "httpGet": {
-                    "path": "/hello",
-                    "port": 8080
-                  }
-                },
-                "livenessProbe": {
-                  "timeoutSeconds": 3,
-                  "initialDelaySeconds": 30,
-                  "httpGet": {
-                    "path": "/hello",
-                    "port": 8080
-                  }
-                }
-              }
-            ],
-            "volumes": [
-              {
-                "name": "db"
-              },
-              {
-                "name": "config",
-                "secret": {
-                  "secretName": "heketi-config-secret"
-                }
-              }
-            ]
-          }
-        }
-      }
-    }
-  ]
-}
diff --git a/contrib/network-storage/heketi/roles/provision/heketi-deployment.json b/contrib/network-storage/heketi/roles/provision/heketi-deployment.json
deleted file mode 100644
index 5eb71718cc9b5ac4b1e32eec005f6890b6c871e7..0000000000000000000000000000000000000000
--- a/contrib/network-storage/heketi/roles/provision/heketi-deployment.json
+++ /dev/null
@@ -1,159 +0,0 @@
-{
-  "kind": "List",
-  "apiVersion": "v1",
-  "items": [
-    {
-      "kind": "Secret",
-      "apiVersion": "v1",
-      "metadata": {
-        "name": "heketi-db-backup",
-        "labels": {
-          "glusterfs": "heketi-db",
-          "heketi": "db"
-        }
-      },
-      "data": {
-      },
-      "type": "Opaque"
-    },
-    {
-      "kind": "Service",
-      "apiVersion": "v1",
-      "metadata": {
-        "name": "heketi",
-        "labels": {
-          "glusterfs": "heketi-service",
-          "deploy-heketi": "support"
-        },
-        "annotations": {
-          "description": "Exposes Heketi Service"
-        }
-      },
-      "spec": {
-        "selector": {
-          "name": "heketi"
-        },
-        "ports": [
-          {
-            "name": "heketi",
-            "port": 8080,
-            "targetPort": 8080
-          }
-        ]
-      }
-    },
-    {
-      "kind": "Deployment",
-      "apiVersion": "extensions/v1beta1",
-      "metadata": {
-        "name": "heketi",
-        "labels": {
-          "glusterfs": "heketi-deployment"
-        },
-        "annotations": {
-          "description": "Defines how to deploy Heketi"
-        }
-      },
-      "spec": {
-        "replicas": 1,
-        "template": {
-          "metadata": {
-            "name": "heketi",
-            "labels": {
-              "name": "heketi",
-              "glusterfs": "heketi-pod"
-            }
-          },
-          "spec": {
-            "serviceAccountName": "heketi-service-account",
-            "containers": [
-              {
-                "image": "heketi/heketi:7",
-                "imagePullPolicy": "Always",
-                "name": "heketi",
-                "env": [
-                  {
-                    "name": "HEKETI_EXECUTOR",
-                    "value": "kubernetes"
-                  },
-                  {
-                    "name": "HEKETI_DB_PATH",
-                    "value": "/var/lib/heketi/heketi.db"
-                  },
-                  {
-                    "name": "HEKETI_FSTAB",
-                    "value": "/var/lib/heketi/fstab"
-                  },
-                  {
-                    "name": "HEKETI_SNAPSHOT_LIMIT",
-                    "value": "14"
-                  },
-                  {
-                    "name": "HEKETI_KUBE_GLUSTER_DAEMONSET",
-                    "value": "y"
-                  }
-                ],
-                "ports": [
-                  {
-                    "containerPort": 8080
-                  }
-                ],
-                "volumeMounts": [
-                  {
-                    "mountPath": "/backupdb",
-                    "name": "heketi-db-secret"
-                  },
-                  {
-                    "name": "db",
-                    "mountPath": "/var/lib/heketi"
-                  },
-                  {
-                    "name": "config",
-                    "mountPath": "/etc/heketi"
-                  }
-                ],
-                "readinessProbe": {
-                  "timeoutSeconds": 3,
-                  "initialDelaySeconds": 3,
-                  "httpGet": {
-                    "path": "/hello",
-                    "port": 8080
-                  }
-                },
-                "livenessProbe": {
-                  "timeoutSeconds": 3,
-                  "initialDelaySeconds": 30,
-                  "httpGet": {
-                    "path": "/hello",
-                    "port": 8080
-                  }
-                }
-              }
-            ],
-            "volumes": [
-              {
-                "name": "db",
-                "glusterfs": {
-                  "endpoints": "heketi-storage-endpoints",
-                  "path": "heketidbstorage"
-                }
-              },
-              {
-                "name": "heketi-db-secret",
-                "secret": {
-                  "secretName": "heketi-db-backup"
-                }
-              },
-              {
-                "name": "config",
-                "secret": {
-                  "secretName": "heketi-config-secret"
-                }
-              }
-            ]
-          }
-        }
-      }
-    }
-  ]
-}
diff --git a/contrib/network-storage/heketi/roles/provision/heketi-service-account.json b/contrib/network-storage/heketi/roles/provision/heketi-service-account.json
deleted file mode 100644
index 1dbcb9e962c785ef9d1e0ad28ccc7f999ca31d49..0000000000000000000000000000000000000000
--- a/contrib/network-storage/heketi/roles/provision/heketi-service-account.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "apiVersion": "v1",
-  "kind": "ServiceAccount",
-  "metadata": {
-    "name": "heketi-service-account"
-  }
-}
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/kubernetes.yml b/contrib/network-storage/heketi/roles/provision/tasks/kubernetes.yml
index 257f85c047a85f6e2eb7d2ab8ca39d6bd524027e..e249fc1d17168ae82672b0a714a6bd3b9e21474f 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/kubernetes.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/kubernetes.yml
@@ -4,7 +4,7 @@
   changed_when: false
 - name: "Deploy the GlusterFS DaemonSet"
   when: "daemonset_state.stdout == \"\""
-  command: "kubectl create -f {{ role_path }}/glusterfs-daemonset.json"
+  command: "kubectl create -f {{ kube_config_dir }}/glusterfs-daemonset.json"
 - register: "daemonset_state"
   command: "kubectl get daemonset glusterfs --output=json --ignore-not-found=true"
   changed_when: false
@@ -30,7 +30,7 @@
   changed_when: false
 - name: "Deploy the Heketi service account"
   when: "service_account_state.stdout == \"\""
-  command: "kubectl create -f {{ role_path }}/heketi-service-account.json"
+  command: "kubectl create -f {{ kube_config_dir }}/heketi-service-account.json"
 - register: "service_account_state"
   command: "kubectl get serviceaccount heketi-service-account -o=name --ignore-not-found=true"
   changed_when: false
@@ -51,12 +51,13 @@
   command: "kubectl get secret heketi-config-secret -o=name --ignore-not-found=true"
   changed_when: false
 - name: "Render Heketi secret configuration."
+  become: true
   template:
     src: "heketi.json.j2"
-    dest: "{{ artifacts_dir }}/heketi.json"
+    dest: "{{ kube_config_dir }}/heketi.json"
 - name: "Deploy Heketi config secret"
   when: "secret_state.stdout == \"\""
-  command: "kubectl create secret generic heketi-config-secret --from-file={{ artifacts_dir }}/heketi.json"
+  command: "kubectl create secret generic heketi-config-secret --from-file={{ kube_config_dir }}/heketi.json"
 - register: "secret_state"
   command: "kubectl get secret heketi-config-secret -o=name --ignore-not-found=true"
   changed_when: false
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/main.yml b/contrib/network-storage/heketi/roles/provision/tasks/main.yml
index 983f5e67229d04f7b00254110926c6e790b58add..f85306b476be8afa759e945d5e6d8388b5b90039 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/main.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/main.yml
@@ -1,4 +1,12 @@
 ---
+- name: "Render configuration."
+  become: true
+  template: { src: "{{ item.file }}.j2", dest: "{{ kube_config_dir }}/{{ item.file }}" }
+  with_items:
+      - { file: "glusterfs-daemonset.json" }
+      - { file: "heketi-bootstrap.json" }
+      - { file: "heketi-deployment.json" }
+      - { file: "heketi-service-account.json" }
 - name: "Prepare kubernetes."
   include_tasks: "kubernetes.yml"
 
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup.yml
index c2eb0502cd53633b9a1b565c290c0c04244a77d7..a2c532fa04ffa5e3a9d28aab22b3b8c25259ea01 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/setup.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/setup.yml
@@ -10,16 +10,21 @@
     - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Deployment']\"))|length == 0"
     - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Pod']\"))|length == 0"
   include_tasks: "setup/boot.yml"
-- name: "Test rest endpoint port."
-  wait_for: { host: "localhost", port: "48080", state: "absent" }
-- name: "Start REST endpoint."
-  include_tasks: "setup/rest.yml"
 
 # Prepare heketi topology
+- name: "Get heketi initial pod state."
+  register: "initial_heketi_pod"
+  command: "kubectl get pods --selector=deploy-heketi=pod,glusterfs=heketi-pod,name=deploy-heketi --output=json"
+  changed_when: false
+- name: "Ensure heketi bootstrap pod is up."
+  assert:
+    that: "(initial_heketi_pod.stdout|from_json|json_query('items[*]'))|length == 1"
+- set_fact:
+    initial_heketi_pod_name: "{{ initial_heketi_pod.stdout|from_json|json_query(\"items[*].metadata.name|[0]\") }}"
 - name: "Test heketi topology."
   changed_when: false
   register: "heketi_topology"
-  command: "heketi-cli -s http://localhost:48080 topology info --json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli topology info --json"
 - name: "Load heketi topology."
   when: "heketi_topology.stdout|from_json|json_query(\"clusters[*].nodes[*]\")|flatten|length == 0"
   include_tasks: "setup/topology.yml"
@@ -33,6 +38,8 @@
   command: "kubectl get secrets,endpoints,services,jobs --output=json"
   changed_when: false
   register: "heketi_storage_state"
+- command: "kubectl get secrets,endpoints,services,jobs --output=json"
+  register: "job"
 - name: "Create heketi storage."
   include_tasks: "setup/storage.yml"
   vars:
@@ -45,7 +52,6 @@
     - "heketi_storage_state.stdout|from_json|json_query(endpoints_query)|length == 0"
     - "heketi_storage_state.stdout|from_json|json_query(service_query)|length == 0"
     - "heketi_storage_state.stdout|from_json|json_query(job_query)|length == 0"
-
 # Finalize setup
 - name: "Tear down bootstrap."
   include_tasks: "setup/tear-down-bootstrap.yml"
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/boot.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/boot.yml
index 358881185c38edae91447cf6ccea4ecc95917077..6aab82cca4e8bfb303432d24af7e63ffdb495683 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/setup/boot.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/setup/boot.yml
@@ -4,7 +4,7 @@
   changed_when: false
   command: "kubectl get services,deployments,pods --selector=deploy-heketi --output=json"
 - name: "Create Heketi initial service and deployment"
-  command: "kubectl create -f {{ role_path }}/heketi-bootstrap.json"
+  command: "kubectl create -f {{ kube_config_dir }}/heketi-bootstrap.json"
   when:
     - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Service']\"))|length == 0"
     - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Deployment']\"))|length == 0"
@@ -13,13 +13,6 @@
   register: "initial_heketi_state"
   changed_when: false
   command: "kubectl get services,deployments,pods --selector=deploy-heketi --output=json"
-- name: "Ensure heketi bootstrap environment exists."
-  assert:
-    that:
-      - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Service'].metadata.name\")).0 == 'deploy-heketi'"
-      - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Deployment'].metadata.name\")).0 == 'deploy-heketi'"
-      - "(initial_heketi_state.stdout|from_json|json_query(\"items[?kind=='Pod'].metadata.labels.name\")).0 == 'deploy-heketi'"
-    msg: "Heketi deployment did not succeed."
 - name: "Wait for heketi bootstrap to complete."
   changed_when: false
   register: "initial_heketi_state"
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/heketi.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/heketi.yml
index ff43568cae8b4e5d836e764fe8f64a69531ff66d..cba5e57ed9542b8d74079f8a8f9a91b6947109de 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/setup/heketi.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/setup/heketi.yml
@@ -1,6 +1,6 @@
 ---
 - name: "Create long term Heketi instance."
-  command: "kubectl create -f {{ role_path }}/heketi-deployment.json"
+  command: "kubectl create -f {{ kube_config_dir }}/heketi-deployment.json"
 - name: "Get heketi deployment state."
   register: "heketi_deployment_state"
   command: "kubectl get deployment heketi -o=name --ignore-not-found=true"
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/rest.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/rest.yml
deleted file mode 100644
index 1b0d475e21df5e2e4001caca3dc180cb2499926d..0000000000000000000000000000000000000000
--- a/contrib/network-storage/heketi/roles/provision/tasks/setup/rest.yml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-# Enable local REST-Interface
-- name: "Get heketi initial pod state."
-  register: "initial_heketi_pod"
-  command: "kubectl get pods --selector=deploy-heketi=pod,glusterfs=heketi-pod,name=deploy-heketi --output=json"
-  changed_when: false
-- name: "Ensure heketi bootstrap pod is up."
-  assert:
-    that: "(initial_heketi_pod.stdout|from_json|json_query('items[*]'))|length == 1"
-- name: "Temporarily enable local port forwarding to heketi REST interface"
-  vars:
-    initial_heketi_pod_name: "{{ initial_heketi_pod.stdout|from_json|json_query(\"items[*].metadata.name|[0]\") }}"
-  command: "kubectl port-forward {{ initial_heketi_pod_name }} 48080:8080"
-  async: 600
-  poll: 0
-  ignore_errors: "yes"
-  register: "heketi_port_forwarding"
-  changed_when: false
-- name: "Ensure port forwarding is enabled."
-  retries: 10
-  delay: 5
-  assert:
-    that:
-      - "heketi_port_forwarding.finished == 0"
-      - "heketi_port_forwarding.started == 1"
-      - "heketi_port_forwarding.failed == false"
-    msg: "Port forwarding does not work."
-- name: "Test REST endpoint."
-  uri: { url: "http://localhost:48080/hello", method: "GET", return_content: true }
-  register: "rest_hello_check"
-  until: "rest_hello_check.content == \"Hello from Heketi\""
-  retries: 60
-  delay: 5
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/storage.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/storage.yml
index 16b300600639231fa5491d9d0e4be6c20a85b92a..64a78714c6347dfadfaa1a142ce77b7e159c291b 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/setup/storage.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/setup/storage.yml
@@ -4,7 +4,7 @@
   changed_when: false
   register: "heketi_storage_state"
 - name: "Create heketi storage."
-  command: "kubectl create -f {{ artifacts_dir }}/heketi-storage.json"
+  command: "kubectl create -f {{ kube_config_dir }}/heketi-storage.json"
   vars:
     secret_query: "items[?metadata.name=='heketi-storage-secret' && kind=='Secret']"
     endpoints_query: "items[?metadata.name=='heketi-storage-endpoints' && kind=='Endpoints']"
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/topology.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/topology.yml
index 378aa20de610d2c71657b3abda0369e484f75eac..190a131c34eeb653ebcfb35890bf2914dd232382 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/setup/topology.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/setup/topology.yml
@@ -1,18 +1,21 @@
 ---
 - name: "Get heketi topology."
   register: "heketi_topology"
-  command: "heketi-cli -s http://localhost:48080 topology info --json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli topology info --json"
 - name: "Render heketi topology template."
+  become: true
   vars: { nodes: "{{ groups['heketi-node'] }}" }
   template:
     src: "topology.json.j2"
-    dest: "{{ artifacts_dir }}/topology.json"
+    dest: "{{ kube_config_dir }}/topology.json"
+- name: "Copy topology configuration into container."
+  command: "kubectl cp {{ kube_config_dir }}/topology.json {{ initial_heketi_pod_name }}:/tmp/topology.json"
 - name: "Load heketi topology."
   when: "heketi_topology.stdout|from_json|json_query(\"clusters[*].nodes[*]\")|flatten|length == 0"
-  command: "heketi-cli -s http://localhost:48080 topology load --json={{ artifacts_dir }}/topology.json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli topology load --json=/tmp/topology.json"
 - name: "Get heketi topology."
   register: "heketi_topology"
-  command: "heketi-cli -s http://localhost:48080 topology info --json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli topology info --json"
   until: "heketi_topology.stdout|from_json|json_query(\"clusters[*].nodes[*].devices[?state=='online'].id\")|flatten|length == groups['heketi-node']|length"
   retries: 60
   delay: 5
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml b/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml
index 265cdff5724f3018b437c92eebda380475b91e05..d8e7bf4b85e3d0220053ec760848b42d5c94fa72 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/setup/volumes.yml
@@ -1,11 +1,11 @@
 ---
 - name: "Get heketi volume ids."
-  command: "heketi-cli -s http://localhost:48080 volume list --json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli volume list --json"
   changed_when: false
   register: "heketi_volumes"
 - name: "Get heketi volumes."
   changed_when: false
-  command: "heketi-cli -s http://localhost:48080 volume info {{ volume_id }} --json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli volume info {{ volume_id }} --json"
   with_items: "{{ heketi_volumes.stdout|from_json|json_query(\"volumes[*]\") }}"
   loop_control: { loop_var: "volume_id" }
   register: "volumes_information"
@@ -16,19 +16,27 @@
   vars: { volume: "{{ volume_information.stdout|from_json }}" }
   when: "volume.name == 'heketidbstorage'"
 - name: "Provision database volume."
-  command: "heketi-cli -s http://localhost:48080 setup-openshift-heketi-storage"
-  args: { chdir: "{{ artifacts_dir }}" }
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli setup-openshift-heketi-storage"
   when: "heketi_database_volume_exists is undefined"
+- name: "Copy configuration from pod."
+  become: true
+  command: "/usr/local/bin/kubectl cp {{ initial_heketi_pod_name }}:/heketi-storage.json {{ kube_config_dir }}/heketi-storage.json"
 - name: "Get heketi volume ids."
-  command: "heketi-cli -s http://localhost:48080 volume list --json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli volume list --json"
   changed_when: false
   register: "heketi_volumes"
 - name: "Get heketi volumes."
   changed_when: false
-  command: "heketi-cli -s http://localhost:48080 volume info {{ volume_id }} --json"
+  command: "kubectl exec {{ initial_heketi_pod_name }} -- heketi-cli volume info {{ volume_id }} --json"
   with_items: "{{ heketi_volumes.stdout|from_json|json_query(\"volumes[*]\") }}"
   loop_control: { loop_var: "volume_id" }
   register: "volumes_information"
+- name: "debug heketi db vol."
+  with_items: "{{ volumes_information.results }}"
+  loop_control: { loop_var: "volume_information" }
+  vars: { volume: "{{ volume_information.stdout|from_json }}" }
+  when: "volume.name == 'heketidbstorage'"
+  debug: { var: "volume" }
 - name: "Test heketi database volume."
   set_fact: { heketi_database_volume_created: true }
   with_items: "{{ volumes_information.results }}"
diff --git a/contrib/network-storage/heketi/roles/provision/tasks/storageclass.yml b/contrib/network-storage/heketi/roles/provision/tasks/storageclass.yml
index d2d8e772539addb2c65ba80aebdd988c64b058f0..761ec6533a1d6c32d07683d728ee7b8bd97293b9 100644
--- a/contrib/network-storage/heketi/roles/provision/tasks/storageclass.yml
+++ b/contrib/network-storage/heketi/roles/provision/tasks/storageclass.yml
@@ -10,11 +10,12 @@
 - name: "Ensure heketi service is available."
   assert: { that: "heketi_service.stdout != \"\""  }
 - name: "Render storage class configuration."
+  become: true
   vars:
     endpoint_address: "{{ (heketi_service.stdout|from_json).spec.clusterIP }}"
   template:
     src: "storageclass.yml.j2"
-    dest: "{{ artifacts_dir }}/storageclass.yml"
+    dest: "{{ kube_config_dir }}/storageclass.yml"
 - name: "Setup storage class."
   when: "storageclass.stdout == \"\""
-  command: "kubectl create -f {{ artifacts_dir }}/storageclass.yml"
+  command: "kubectl create -f {{ kube_config_dir }}/storageclass.yml"
diff --git a/contrib/network-storage/heketi/roles/provision/templates/storageclass.yml.j2 b/contrib/network-storage/heketi/roles/provision/templates/storageclass.yml.j2
index 5eec1f5d16c8833422f8d54721d31019ecd0839d..65104e143b17a73bb86f66b4b7dc7b142538f462 100644
--- a/contrib/network-storage/heketi/roles/provision/templates/storageclass.yml.j2
+++ b/contrib/network-storage/heketi/roles/provision/templates/storageclass.yml.j2
@@ -3,6 +3,8 @@ apiVersion: storage.k8s.io/v1
 kind: StorageClass
 metadata:
   name: gluster
+  annotations:
+    storageclass.beta.kubernetes.io/is-default-class: "true"
 provisioner: kubernetes.io/glusterfs
 parameters:
   resturl: "http://{{ endpoint_address }}:8080"