diff --git a/ansible/roles/ceilometer/handlers/main.yml b/ansible/roles/ceilometer/handlers/main.yml
index 6c16f6eaec..54807b0106 100644
--- a/ansible/roles/ceilometer/handlers/main.yml
+++ b/ansible/roles/ceilometer/handlers/main.yml
@@ -76,4 +76,5 @@
       or ceilometer_conf.changed | bool
       or ceilometer_pipeline.changed | bool
       or policy_json.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 d2c5c153ff..8d8783edf1 100644
--- a/ansible/roles/ceilometer/tasks/config.yml
+++ b/ansible/roles/ceilometer/tasks/config.yml
@@ -102,6 +102,21 @@
   notify:
     - "Restart {{ item.key }} container"
 
+- name: Copying VMware vCenter CA file
+  vars:
+    service: "{{ ceilometer_services['ceilometer-compute'] }}"
+  copy:
+    src: "{{ node_custom_config }}/vmware_ca"
+    dest: "{{ node_config_directory }}/ceilometer-compute/vmware_ca"
+  register: vcenter_ca_file
+  when:
+    - nova_compute_virt_type == "vmware"
+    - not vmware_vcenter_insecure | bool
+    - inventory_hostname in groups[service.group]
+    - service.enabled | bool
+  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
diff --git a/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2 b/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2
index 236709bfe7..6ba32f5e47 100644
--- a/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer-compute.json.j2
@@ -19,7 +19,13 @@
             "dest": "/etc/ceilometer/pipeline.yaml",
             "owner": "ceilometer",
             "perm": "0600"
-        }
+        }{% if nova_compute_virt_type == "vmware" and not vmware_vcenter_insecure | bool %},
+        {
+            "source": "{{ container_config_directory }}/vmware_ca",
+            "dest": "/etc/ceilometer/vmware_ca",
+            "owner": "ceilometer",
+            "perm": "0600"
+        }{% endif %}
     ],
     "permissions": [
         {
diff --git a/ansible/roles/ceilometer/templates/ceilometer.conf.j2 b/ansible/roles/ceilometer/templates/ceilometer.conf.j2
index 20d5876ea3..10df121e77 100644
--- a/ansible/roles/ceilometer/templates/ceilometer.conf.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer.conf.j2
@@ -9,6 +9,10 @@ transport_url = rabbit://{% for host in groups['rabbitmq'] %}{{ rabbitmq_user }}
 evaluation_interval = 300
 {% endif %}
 
+{% if nova_compute_virt_type == 'vmware' %}
+hypervisor_inspector = vsphere
+{% endif %}
+
 [keystone_authtoken]
 auth_uri = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_public_port }}
 project_domain_name = {{ default_project_domain_name }}
@@ -34,3 +38,14 @@ project_domain_id = {{ default_project_domain_id }}
 user_domain_id = {{ default_user_domain_id }}
 auth_type = password
 interface = internal
+
+{% if nova_compute_virt_type == 'vmware' %}
+[vmware]
+host_ip = {{ vmware_vcenter_host_ip }}
+host_username = {{ vmware_vcenter_host_username }}
+host_password = {{ vmware_vcenter_host_password }}
+insecure = {{ vmware_vcenter_insecure }}
+{% if not vmware_vcenter_insecure | bool %}
+ca_file = /etc/ceilometer/vmware_ca
+{% endif %}
+{% endif %}