diff --git a/ansible/roles/neutron/templates/metadata_agent.ini.j2 b/ansible/roles/neutron/templates/metadata_agent.ini.j2
index cce556950ecabc25e70228063f922a759a01f07e..39ee0e4bc903b9a5cc311b78b56188e5e47d4462 100644
--- a/ansible/roles/neutron/templates/metadata_agent.ini.j2
+++ b/ansible/roles/neutron/templates/metadata_agent.ini.j2
@@ -10,17 +10,3 @@ user_domain_id = default
 project_name = service
 username = neutron
 password = {{ neutron_keystone_password }}
-
-nova_url = http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2
-notify_nova_on_port_data_changes = True
-notify_nova_on_port_status_change = True
-
-[nova]
-auth_url = http://{{ kolla_internal_address }}:{{ keystone_admin_port }}
-auth_plugin = password
-project_domain_id = default
-user_domain_id = default
-region_name = {{ openstack_region_name }}
-project_name = service
-username = nova
-password = {{ nova_keystone_password }}
diff --git a/ansible/roles/neutron/templates/neutron.conf.j2 b/ansible/roles/neutron/templates/neutron.conf.j2
index 8c9961fd64c261607d960edcdf566f18716345f5..7d0313d1f25d2b8b0e2d6496df3a2d11fa94958c 100644
--- a/ansible/roles/neutron/templates/neutron.conf.j2
+++ b/ansible/roles/neutron/templates/neutron.conf.j2
@@ -15,6 +15,21 @@ allow_overlapping_ips = true
 core_plugin = ml2
 service_plugins = router
 
+
+nova_url = http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2
+notify_nova_on_port_data_changes = True
+notify_nova_on_port_status_change = True
+
+[nova]
+auth_url = http://{{ kolla_internal_address }}:{{ keystone_admin_port }}
+auth_plugin = password
+project_domain_id = default
+user_domain_id = default
+region_name = {{ openstack_region_name }}
+project_name = service
+username = nova
+password = {{ nova_keystone_password }}
+
 [oslo_messaging_rabbit]
 rabbit_host = {{ kolla_internal_address }}
 rabbit_userid = {{ rabbitmq_user }}
diff --git a/ansible/roles/nova/tasks/start.yml b/ansible/roles/nova/tasks/start.yml
index 1d1c92356f73ec7adf6d7050701600bee629d52c..ebe17a16e406549f1d1f70e9277d66553deb8273 100644
--- a/ansible/roles/nova/tasks/start.yml
+++ b/ansible/roles/nova/tasks/start.yml
@@ -10,6 +10,7 @@
     container_volumes:
       - "/run:/run"
       - "/lib/modules:/lib/modules:ro"
+      - "/var/lib/nova/instances"
   when: inventory_hostname in groups['compute']
 
 - include: ../../start.yml
@@ -70,8 +71,11 @@
       KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
     container_image: "{{ docker_nova_compute_image_full }}"
     container_name: "nova_compute"
+    container_privileged: "True"
     container_volumes:
       - "{{ node_config_directory }}/nova-compute/:/opt/kolla/nova-compute/:ro"
       - "/run:/run"
       - "/lib/modules:/lib/modules:ro"
+    container_volumes_from:
+      - "nova_libvirt"
   when: inventory_hostname in groups['compute']
diff --git a/docker/centos/binary/nova/nova-compute/Dockerfile b/docker/centos/binary/nova/nova-compute/Dockerfile
index 6cdd27fbe339f08b8a49e3f5c52a4095d47c3f27..754704ba541dc84b4249fa00b4bb299156c8253e 100644
--- a/docker/centos/binary/nova/nova-compute/Dockerfile
+++ b/docker/centos/binary/nova/nova-compute/Dockerfile
@@ -2,6 +2,7 @@ FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%nova-base:%%KOLLA_TAG%%
 MAINTAINER Kolla Project (https://launchpad.net/kolla)
 
 RUN yum -y install openstack-nova-compute \
+        openvswitch \
         sysfsutils && yum clean all
 
 COPY config-nova-compute.sh /opt/kolla/config-nova-compute.sh
diff --git a/docker/common/neutron/neutron-server/config-external.sh b/docker/common/neutron/neutron-server/config-external.sh
index c8558ecca35f945be28147010bd5053e49a3891c..574923067fdf16a7b49566d72ff903fa28959580 100755
--- a/docker/common/neutron/neutron-server/config-external.sh
+++ b/docker/common/neutron/neutron-server/config-external.sh
@@ -9,8 +9,7 @@ if [[ -f "$SOURCE" ]]; then
     chmod 0644 $TARGET
 fi
 
-# TODO(SamYaple): Remove this from neutron-server once bootstrap is understood
-SOURCE="/opt/kolla/neutron-openvswitch-agent/ml2_conf.ini"
+SOURCE="/opt/kolla/neutron-server/ml2_conf.ini"
 TARGET="/etc/neutron/plugins/ml2/ml2_conf.ini"
 OWNER="neutron"
 
diff --git a/docker/common/neutron/neutron-server/start.sh b/docker/common/neutron/neutron-server/start.sh
index 7df950e57e745c105b27ba614c226feeb9e36c8c..97317c05bdfe0ed3282a6a2a5fcd0c6d94d6bf6c 100755
--- a/docker/common/neutron/neutron-server/start.sh
+++ b/docker/common/neutron/neutron-server/start.sh
@@ -2,7 +2,7 @@
 set -o errexit
 
 CMD="/usr/bin/neutron-server"
-ARGS="--config-file /etc/neutron/neutron.conf"
+ARGS="--config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini"
 
 # Loading common functions.
 source /opt/kolla/kolla-common.sh
diff --git a/docker/common/nova/nova-libvirt/start.sh b/docker/common/nova/nova-libvirt/start.sh
index 00d7046d1cc276c6b931d50a49b11c40b931cfdf..58ad58cb040e3a4a3f0b80226bd74d3cb7772cf8 100755
--- a/docker/common/nova/nova-libvirt/start.sh
+++ b/docker/common/nova/nova-libvirt/start.sh
@@ -10,4 +10,12 @@ source /opt/kolla/kolla-common.sh
 # Config-internal script exec out of this function, it does not return here.
 set_configs
 
+# TODO(SamYaple): Unify this with config-internal. Tweak libvirt.conf rather
+#                 than change permissions.
+# Fix permissions for libvirt
+if [[ -c /dev/kvm ]]; then
+    chmod 660 /dev/kvm
+    chown root:kvm /dev/kvm
+fi
+
 exec $CMD $ARGS