diff --git a/ironic/drivers/modules/pxe.py b/ironic/drivers/modules/pxe.py
index 654b821565..493d5e29b7 100644
--- a/ironic/drivers/modules/pxe.py
+++ b/ironic/drivers/modules/pxe.py
@@ -250,13 +250,12 @@ def _build_pxe_config_options(task, pxe_info, service=False):
     else:
         pxe_options = _build_deploy_pxe_options(task, pxe_info, mode=mode)
 
-    if mode == 'deploy':
-        # NOTE(pas-ha) we still must always add user image kernel and ramdisk
-        # info as later during switching PXE config to service mode the
-        # template will not be regenerated anew, but instead edited as-is.
-        # This can be changed later if/when switching PXE config will also use
-        # proper templating instead of editing existing files on disk.
-        pxe_options.update(_build_instance_pxe_options(task, pxe_info))
+    # NOTE(pas-ha) we still must always add user image kernel and ramdisk
+    # info as later during switching PXE config to service mode the
+    # template will not be regenerated anew, but instead edited as-is.
+    # This can be changed later if/when switching PXE config will also use
+    # proper templating instead of editing existing files on disk.
+    pxe_options.update(_build_instance_pxe_options(task, pxe_info))
 
     pxe_options.update(_build_extra_pxe_options())
 
diff --git a/ironic/tests/unit/drivers/modules/test_pxe.py b/ironic/tests/unit/drivers/modules/test_pxe.py
index 0af37c88e6..fffe3d368f 100644
--- a/ironic/tests/unit/drivers/modules/test_pxe.py
+++ b/ironic/tests/unit/drivers/modules/test_pxe.py
@@ -250,11 +250,11 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
             'deployment_aki_path': pxe_kernel,
             'tftp_server': tftp_server,
             'ipxe_timeout': 0,
+            'ari_path': ramdisk,
+            'aki_path': kernel,
         }
 
-        if mode == 'deploy':
-            expected_options.update({'ari_path': ramdisk, 'aki_path': kernel})
-        elif mode == 'rescue':
+        if mode == 'rescue':
             self.node.provision_state = states.RESCUING
             self.node.save()
 
@@ -413,10 +413,11 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
             'deployment_aki_path': pxe_kernel,
             'tftp_server': tftp_server,
             'ipxe_timeout': ipxe_timeout_in_ms,
+            'ari_path': ramdisk,
+            'aki_path': kernel,
         }
-        if mode == 'deploy':
-            expected_options.update({'ari_path': ramdisk, 'aki_path': kernel})
-        elif mode == 'rescue':
+
+        if mode == 'rescue':
             self.node.provision_state = states.RESCUING
             self.node.save()
 
diff --git a/releasenotes/notes/bug-1749433-363b747d2db67df6.yaml b/releasenotes/notes/bug-1749433-363b747d2db67df6.yaml
new file mode 100644
index 0000000000..6bdb4c6e9a
--- /dev/null
+++ b/releasenotes/notes/bug-1749433-363b747d2db67df6.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixes a bug preventing a node from booting into the user instance after unrescuing
+    if instance netboot is used. See `bug 1749433
+    <https://bugs.launchpad.net/ironic/+bug/1749433>`_ for details.