diff --git a/roles/kubernetes/master/templates/manifests/kube-controller-manager.manifest.j2 b/roles/kubernetes/master/templates/manifests/kube-controller-manager.manifest.j2
index 4b9ed2f7465afc2584e3dd7a7b975a58ac3bc999..2897ad774e2545bb73742f181514a84736d262b7 100644
--- a/roles/kubernetes/master/templates/manifests/kube-controller-manager.manifest.j2
+++ b/roles/kubernetes/master/templates/manifests/kube-controller-manager.manifest.j2
@@ -16,6 +16,10 @@ spec:
     - --service-account-private-key-file={{ kube_cert_dir }}/apiserver-key.pem
     - --root-ca-file={{ kube_cert_dir }}/ca.pem
     - --v={{ kube_log_level | default('2') }}
+{% if cloud_provider is defined and cloud_provider == "openstack" %}
+    - --cloud-provider=openstack
+    - --cloud-config={{ kube_config_dir }}/cloud_config
+{% endif %}
     livenessProbe:
       httpGet:
         host: 127.0.0.1
@@ -30,6 +34,11 @@ spec:
     - mountPath: /etc/ssl/certs
       name: ssl-certs-host
       readOnly: true
+{% if cloud_provider is defined and cloud_provider == "openstack" %}
+    - mountPath: {{ kube_config_dir }}/cloud_config
+      name: cloudconfig
+      readOnly: true
+{% endif %}
   volumes:
   - hostPath:
       path: {{ kube_cert_dir }}
@@ -37,3 +46,8 @@ spec:
   - hostPath:
       path: /usr/share/ca-certificates
     name: ssl-certs-host
+{% if cloud_provider is defined and cloud_provider == "openstack" %}
+  - hostPath:
+      path: {{ kube_config_dir }}/cloud_config
+    name: cloudconfig
+{% endif %}