diff --git a/inventory/group_vars/k8s-cluster.yml b/inventory/group_vars/k8s-cluster.yml
index 800d9dbb9551a36c5d20a202df7850eca2da77eb..f8210f2914587b5a07a8d9efc5084f5bb092a930 100644
--- a/inventory/group_vars/k8s-cluster.yml
+++ b/inventory/group_vars/k8s-cluster.yml
@@ -159,6 +159,9 @@ istio_enabled: false
 # Local volume provisioner deployment
 local_volumes_enabled: false
 
+# Add Persistent Volumes Storage Class for corresponding cloud provider ( OpenStack is only supported now )
+persistent_volumes_enabled: false
+
 # Make a copy of kubeconfig on the host that runs Ansible in GITDIR/artifacts
 # kubeconfig_localhost: false
 # Download kubectl onto the host that runs Ansible in GITDIR/artifacts
diff --git a/roles/kubernetes-apps/meta/main.yml b/roles/kubernetes-apps/meta/main.yml
index 1cd093b33cc5dcf03e23dcfa790deb2e43aa1635..bfcec80b44580ce065c111a1cc1172eee9bf64ff 100644
--- a/roles/kubernetes-apps/meta/main.yml
+++ b/roles/kubernetes-apps/meta/main.yml
@@ -33,3 +33,8 @@ dependencies:
     tags:
       - apps
       - istio
+  - role: kubernetes-apps/persistent_volumes
+    when: persistent_volumes_enabled
+    tags:
+      - apps
+      - persistent_volumes
diff --git a/roles/kubernetes-apps/persistent_volumes/meta/main.yml b/roles/kubernetes-apps/persistent_volumes/meta/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8a4855bff8a638ae0b247f3bcd8a753616e1785c
--- /dev/null
+++ b/roles/kubernetes-apps/persistent_volumes/meta/main.yml
@@ -0,0 +1,8 @@
+---
+dependencies:
+  - role: kubernetes-apps/persistent_volumes/openstack
+    when:
+      - cloud_provider is defined
+      - cloud_provider in [ 'openstack' ]
+    tags:
+      - persistent_volumes_openstack
diff --git a/roles/kubernetes-apps/persistent_volumes/openstack/defaults/main.yml b/roles/kubernetes-apps/persistent_volumes/openstack/defaults/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8553ec5e264542e5a6a9c1e82a57ef7969697074
--- /dev/null
+++ b/roles/kubernetes-apps/persistent_volumes/openstack/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+persistent_volumes_enabled: false
diff --git a/roles/kubernetes-apps/persistent_volumes/openstack/tasks/main.yml b/roles/kubernetes-apps/persistent_volumes/openstack/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e4d1b138c436e8bcc7420a9ed7665ec176c332e1
--- /dev/null
+++ b/roles/kubernetes-apps/persistent_volumes/openstack/tasks/main.yml
@@ -0,0 +1,21 @@
+---
+- name: Kubernetes Persistent Volumes | Lay down OpenStack Cinder Storage Class template
+  template:
+    src: "{{item.file}}"
+    dest: "{{kube_config_dir}}/{{item.file}}"
+  with_items:
+    - {file: openstack-storage-class.yml, type: StorageClass, name: storage-class }
+  register: manifests
+  when:
+    - inventory_hostname == groups['kube-master'][0]
+
+- name: Kubernetes Persistent Volumes | Add OpenStack Cinder Storage Class
+  kube:
+    name: "{{item.item.name}}"
+    kubectl: "{{bin_dir}}/kubectl"
+    resource: "{{item.item.type}}"
+    filename: "{{kube_config_dir}}/{{item.item.file}}"
+    state: "latest"
+  with_items: "{{ manifests.results }}"
+  when:
+    - inventory_hostname == groups['kube-master'][0]
diff --git a/roles/kubernetes-apps/persistent_volumes/openstack/templates/openstack-storage-class.yml b/roles/kubernetes-apps/persistent_volumes/openstack/templates/openstack-storage-class.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c643cfa09bee3fdd90013e2d023fd56eb53ae819
--- /dev/null
+++ b/roles/kubernetes-apps/persistent_volumes/openstack/templates/openstack-storage-class.yml
@@ -0,0 +1,9 @@
+kind: StorageClass
+apiVersion: storage.k8s.io/v1
+metadata:
+  name: standard
+  annotations:
+    storageclass.kubernetes.io/is-default-class: "true"
+provisioner: kubernetes.io/cinder
+parameters:
+  availability: nova
diff --git a/roles/kubespray-defaults/defaults/main.yaml b/roles/kubespray-defaults/defaults/main.yaml
index ec928b298bb61e479b021f7464e91360c75ba12e..579eb7b832d08f7aada2d1dc679f05457e6ec0ac 100644
--- a/roles/kubespray-defaults/defaults/main.yaml
+++ b/roles/kubespray-defaults/defaults/main.yaml
@@ -144,6 +144,7 @@ helm_enabled: false
 istio_enabled: false
 enable_network_policy: false
 local_volumes_enabled: false
+persistent_volumes_enabled: false
 
 # Base path for local volume provisioner addon
 local_volume_base_dir: /mnt/disks