diff --git a/devstack/lib/ironic b/devstack/lib/ironic
index 5d0e327975..086f028bf3 100644
--- a/devstack/lib/ironic
+++ b/devstack/lib/ironic
@@ -20,6 +20,10 @@
 # - stop_ironic
 # - cleanup_ironic
 
+# ensure we don't re-source this in the same environment
+[[ -z "$_IRONIC_DEVSTACK_LIB" ]] || return 0
+declare -r _IRONIC_DEVSTACK_LIB=1
+
 # Save xtrace and pipefail settings
 _XTRACE_IRONIC=$(set +o | grep xtrace)
 _PIPEFAIL_IRONIC=$(set +o | grep pipefail)
@@ -246,7 +250,7 @@ fi
 # Additional valid choices if IRONIC_IS_HARDWARE == true are:
 # ``pxe_iscsi_cimc``, ``pxe_agent_cimc``, ``pxe_ucs``, ``pxe_cimc``,
 # ``*_pxe_oneview`` and ``pxe_drac``
-IRONIC_DEPLOY_DRIVER=${IRONIC_DEPLOY_DRIVER:-pxe_ssh}
+IRONIC_DEPLOY_DRIVER=${IRONIC_DEPLOY_DRIVER:-pxe_ipmitool}
 
 # If the requested driver is not yet enable, enable it, if it is not it will fail anyway
 if [[ -z "$(echo ${IRONIC_ENABLED_DRIVERS},${IRONIC_ENABLED_HARDWARE_TYPES} | grep -w ${IRONIC_DEPLOY_DRIVER})" ]]; then
@@ -565,7 +569,7 @@ fi
 
 # NOTE(vsaienko) set DEFAULT_IMAGE_NAME here, as it is still used by grenade
 # https://github.com/openstack-dev/grenade/blob/90c4ead2f2a7ed48c873c51cef415b83d655752e/projects/60_nova/resources.sh#L31
-DEFAULT_IMAGE_NAME=$IRONIC_IMAGE_NAME
+export DEFAULT_IMAGE_NAME=$IRONIC_IMAGE_NAME
 
 # Syslinux >= 5.00 pxelinux.0 binary is not "stand-alone" anymore,
 # it depends on some c32 modules to work correctly.
diff --git a/devstack/upgrade/settings b/devstack/upgrade/settings
index 5aa4696c96..cfd939858e 100644
--- a/devstack/upgrade/settings
+++ b/devstack/upgrade/settings
@@ -15,3 +15,16 @@ devstack_localrc base enable_service ir-api ir-cond ironic
 
 devstack_localrc target enable_plugin ironic https://git.openstack.org/openstack/ironic
 devstack_localrc target enable_service ir-api ir-cond ironic
+
+# Duplicate some setup bits from target DevStack. Use old devstack as we install base environment from it.
+BASE_TOP_DIR=$TOP_DIR/../../old/devstack/
+source $BASE_TOP_DIR/stackrc
+source $BASE_TOP_DIR/lib/tls
+source $BASE_TOP_DIR/lib/nova
+source $BASE_TOP_DIR/lib/neutron-legacy
+source $BASE_TOP_DIR/lib/apache
+source $BASE_TOP_DIR/lib/keystone
+
+# Update global variables like DEFAULT_IMAGE_NAME that are set in ironic devstack plugin
+IRONIC_BASE_DEVSTACK_DIR=$BASE_TOP_DIR/../ironic/devstack
+source $IRONIC_BASE_DEVSTACK_DIR/lib/ironic