diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index 3bbe452ab27da7fa50aaf5123367befb7fce3c94..2f22ce8326d049525840a123aaa6e008dfbfb18a 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -242,6 +242,7 @@ openstack_nova_auth: "{{ openstack_auth }}"
 openstack_placement_auth: "{{ openstack_auth }}"
 
 
+nova_libvirt_port: "16509"
 nova_ssh_port: "8022"
 
 ####################
diff --git a/ansible/roles/nova/tasks/precheck.yml b/ansible/roles/nova/tasks/precheck.yml
index 3b4f623361cce7680968e1dddf5805fa72a3f125..8f0193d2fbaca41228ea7d5e5ebed856c94639e3 100644
--- a/ansible/roles/nova/tasks/precheck.yml
+++ b/ansible/roles/nova/tasks/precheck.yml
@@ -105,6 +105,20 @@
     - nova_ssh.enabled | bool
     - inventory_hostname in groups[nova_ssh.group]
 
+- name: Checking free port for Nova Libvirt
+  vars:
+    nova_libvirt: "{{ nova_services['nova-libvirt'] }}"
+  wait_for:
+    host: "{{ api_interface_address }}"
+    port: "{{ nova_libvirt_port }}"
+    connect_timeout: 1
+    timeout: 1
+    state: stopped
+  when:
+    - container_facts['nova_libvirt'] is not defined
+    - nova_libvirt.enabled | bool
+    - inventory_hostname in groups[nova_libvirt.group]
+
 - name: Checking free port for Nova Placement API
   vars:
     placement_api: "{{ nova_services['placement-api'] }}"
diff --git a/ansible/roles/nova/templates/libvirtd.conf.j2 b/ansible/roles/nova/templates/libvirtd.conf.j2
index a89b97fafbe5046c7158811d47daaea49c439ef1..237a2074ce6821bc6f230e20e11f8358650ea598 100644
--- a/ansible/roles/nova/templates/libvirtd.conf.j2
+++ b/ansible/roles/nova/templates/libvirtd.conf.j2
@@ -5,3 +5,4 @@ ca_file = ""
 log_level = 3
 log_outputs = "3:file:/var/log/kolla/libvirt/libvirtd.log"
 listen_addr = "{{ api_interface_address }}"
+tcp_port = "{{ nova_libvirt_port }}"