diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one
index 5c7d88e544..458ea36f24 100644
--- a/ansible/inventory/all-in-one
+++ b/ansible/inventory/all-in-one
@@ -99,6 +99,9 @@ nova
 [nova-spicehtml5proxy:children]
 nova
 
+[nova-compute-ironic:children]
+nova
+
 # Neutron
 [neutron-server:children]
 neutron
diff --git a/ansible/roles/ironic/tasks/register.yml b/ansible/roles/ironic/tasks/register.yml
index ce44210f20..518fa3a494 100644
--- a/ansible/roles/ironic/tasks/register.yml
+++ b/ansible/roles/ironic/tasks/register.yml
@@ -23,7 +23,7 @@
   command: docker exec -t kolla_ansible /usr/bin/ansible localhost
     -m kolla_keystone_user
     -a "project=service
-        user=ironic
+        user={{ ironic_keystone_user }}
         password={{ ironic_keystone_password }}
         role=admin
         region_name={{ openstack_region_name }}
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index 8a9b3bc16a..812a4ea235 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -61,6 +61,9 @@ nova_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docke
 nova_data_tag: "{{ openstack_release }}"
 nova_data_image_full: "{{ nova_data_image }}:{{ nova_data_tag }}"
 
+nova_compute_ironic_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-nova-compute-ironic"
+nova_compute_ironic_tag: "{{ openstack_release }}"
+nova_compute_ironic_image_full: "{{ nova_compute_ironic_image }}:{{ nova_compute_ironic_tag }}"
 
 ####################
 # Openstack
diff --git a/ansible/roles/nova/tasks/config.yml b/ansible/roles/nova/tasks/config.yml
index 6d7a742d8a..b1685965df 100644
--- a/ansible/roles/nova/tasks/config.yml
+++ b/ansible/roles/nova/tasks/config.yml
@@ -25,6 +25,7 @@
   with_items:
     - "nova-api"
     - "nova-compute"
+    - "nova-compute-ironic"
     - "nova-conductor"
     - "nova-consoleauth"
     - "nova-libvirt"
@@ -39,6 +40,7 @@
   with_items:
     - "nova-api"
     - "nova-compute"
+    - "nova-compute-ironic"
     - "nova-conductor"
     - "nova-consoleauth"
     - "nova-libvirt"
@@ -61,6 +63,7 @@
   with_items:
     - "nova-api"
     - "nova-compute"
+    - "nova-compute-ironic"
     - "nova-conductor"
     - "nova-consoleauth"
     - "nova-novncproxy"
diff --git a/ansible/roles/nova/tasks/start.yml b/ansible/roles/nova/tasks/start.yml
index 1ea4c34bfc..277b0309ec 100644
--- a/ansible/roles/nova/tasks/start.yml
+++ b/ansible/roles/nova/tasks/start.yml
@@ -202,3 +202,27 @@
     env:
       KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
   when: inventory_hostname in groups['compute']
+
+- name: Starting Nova-compute-ironic container
+  docker:
+    tty: True
+    net: host
+    pull: "{{ docker_pull_policy }}"
+    restart_policy: "{{ docker_restart_policy }}"
+    restart_policy_retry: "{{ docker_restart_policy_retry }}"
+    state: reloaded
+    registry: "{{ docker_registry }}"
+    username: "{{ docker_registry_username }}"
+    password: "{{ docker_registry_password }}"
+    insecure_registry: "{{ docker_insecure_registry }}"
+    privileged: True
+    name: nova_compute_ironic
+    image: "{{ nova_compute_ironic_image_full }}"
+    volumes:
+      - "{{ node_config_directory }}/nova-compute-ironic/:{{ container_config_directory }}/:ro"
+      - "/var/lib/kolla/dev/log:/dev/log"
+    env:
+      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
+  when:
+    - inventory_hostname in groups['nova-compute-ironic']
+    - enable_ironic | bool
diff --git a/ansible/roles/nova/templates/nova-compute-ironic.json.j2 b/ansible/roles/nova/templates/nova-compute-ironic.json.j2
new file mode 100644
index 0000000000..c89df44094
--- /dev/null
+++ b/ansible/roles/nova/templates/nova-compute-ironic.json.j2
@@ -0,0 +1,12 @@
+{
+    "command": "nova-compute",
+    "config_files": [
+        {
+            "source": "{{ container_config_directory }}/nova.conf",
+            "dest": "/etc/nova/nova.conf",
+            "owner": "nova",
+            "perm": "0600"
+        }
+    ]
+}
+
diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2
index 781d8dba1a..1d7e95772f 100644
--- a/ansible/roles/nova/templates/nova.conf.j2
+++ b/ansible/roles/nova/templates/nova.conf.j2
@@ -33,12 +33,14 @@ linuxnet_interface_driver = nova.network.linux_net.BridgeInterfaceDriver
 allow_resize_to_same_host = true
 
 {% if enable_ironic | bool %}
-compute_driver = nova.virt.ironic.IronicDriver
 scheduler_host_manager = nova.scheduler.ironic_host_manager.IronicHostManager
+{% endif %}
+
+{% if service_name == "nova-compute-ironic" %}
+compute_driver = nova.virt.ironic.IronicDriver
+vnc_enabled = False
 ram_allocation_ratio = 1.0
 reserved_host_memory_mb = 0
-compute_manager = ironic.nova.compute.manager.ClusteredComputeManager
-scheduler_use_baremetal_filters = True
 {% else %}
 compute_driver = libvirt.LibvirtDriver
 {% endif %}
@@ -72,13 +74,13 @@ html5proxy_host = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['i
 html5proxy_port = {{ nova_spicehtml5proxy_port }}
 {% endif %}
 
-{% if enable_ironic | bool %}
+{% if service_name == "nova-compute-ironic" %}
 [ironic]
 #(TODO) remember to update this once discoverd is replaced by inspector
 admin_username = {{ ironic_keystone_user }}
 admin_password = {{ ironic_keystone_password }}
-admin_url = {{ openstack_auth.auth_url }}
-admin_tenant_name = {{ openstack_auth.project_name }}
+admin_url = {{ openstack_auth_v2.auth_url }}
+admin_tenant_name = service
 api_endpoint = http://{{ kolla_internal_address }}:{{ ironic_api_port }}/v1
 {% endif %}
 
diff --git a/docker/nova/nova-compute-ironic/Dockerfile.j2 b/docker/nova/nova-compute-ironic/Dockerfile.j2
new file mode 100644
index 0000000000..5851017935
--- /dev/null
+++ b/docker/nova/nova-compute-ironic/Dockerfile.j2
@@ -0,0 +1,16 @@
+FROM {{ namespace }}/{{ image_prefix }}nova-base:{{ tag }}
+MAINTAINER {{ maintainer }}
+
+{% if install_type == 'binary' %}
+    {% if base_distro in ['centos', 'fedora', 'oraclelinux', 'rhel'] %}
+
+RUN yum -y install \
+        openstack-nova-compute \
+    && yum clean all
+
+    {% endif %}
+{% endif %}
+
+{{ include_footer }}
+
+USER nova