diff --git a/de/heat-templates/scripts/instance_boot.sh b/de/heat-templates/scripts/instance_boot.sh
index f1f318e..e3f66cf 100644
--- a/de/heat-templates/scripts/instance_boot.sh
+++ b/de/heat-templates/scripts/instance_boot.sh
@@ -3,6 +3,10 @@
 # allow access to the local variables from prepare-metadata.py
 set -a
 
+# ensure we don't re-source this in the same environment
+[[ -z "$_INSTALL_SCRIPT" ]] || return 0
+declare -r -g _INSTALL_SCRIPT=1
+
 #
 # Variables in this block are passed from heat template
 #
@@ -847,127 +851,129 @@
     setup_evpn
 }
 
-case "$NODE_TYPE" in
-    # Please keep the "prepare_metadata_files", "disable-rp-filter", "network_config" and "prepare_network" functions
-    # at the very beginning in the same order.
-    ucp)
-        prepare_metadata_files
-        disable_rp_filter
-        network_config
-        prepare_network
-        prepare_docker_config
-        install_required_packages
-        configure_ntp
-        configure_atop
-        workaround_default_forward_policy
-        install_docker
-        swarm_init
-        create_ucp_config
-        cache_images
-        install_ucp
-        download_bundles
-        rm_ucp_config
-        install_kubectl
-        wait_for_node
-        set_node_labels
-        collect_ceph_metadata
-        configure_contrack
-        disable_iptables_for_bridges
-        if [[ "${SINGLE_NODE}" == true ]]; then
+if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
+    case "$NODE_TYPE" in
+        # Please keep the "prepare_metadata_files", "disable-rp-filter", "network_config" and "prepare_network" functions
+        # at the very beginning in the same order.
+        ucp)
+            prepare_metadata_files
+            disable_rp_filter
+            network_config
+            prepare_network
+            prepare_docker_config
+            install_required_packages
+            configure_ntp
+            configure_atop
+            workaround_default_forward_policy
+            install_docker
+            swarm_init
+            create_ucp_config
+            cache_images
+            install_ucp
+            download_bundles
+            rm_ucp_config
+            install_kubectl
+            wait_for_node
+            set_node_labels
+            collect_ceph_metadata
+            configure_contrack
+            disable_iptables_for_bridges
+            if [[ "${SINGLE_NODE}" == true ]]; then
+                nested_virt_config
+                disable_master_taint
+                collect_interfaces_metadata
+            fi
+            ;;
+        master)
             nested_virt_config
-            disable_master_taint
+            prepare_metadata_files
+            disable_rp_filter
+            network_config
+            prepare_network
+            prepare_docker_config
+            install_required_packages
+            configure_ntp
+            configure_atop
+            workaround_default_forward_policy
+            install_docker
+            cache_images
+            download_bundles
+            join_node manager
+            install_kubectl
+            wait_for_node
+            set_node_labels
+            collect_ceph_metadata
+            configure_contrack
+            disable_iptables_for_bridges
             collect_interfaces_metadata
-        fi
-        ;;
-    master)
-        nested_virt_config
-        prepare_metadata_files
-        disable_rp_filter
-        network_config
-        prepare_network
-        prepare_docker_config
-        install_required_packages
-        configure_ntp
-        configure_atop
-        workaround_default_forward_policy
-        install_docker
-        cache_images
-        download_bundles
-        join_node manager
-        install_kubectl
-        wait_for_node
-        set_node_labels
-        collect_ceph_metadata
-        configure_contrack
-        disable_iptables_for_bridges
-        collect_interfaces_metadata
-        ;;
-    worker)
-        if [[ "${CONFIGURE_HUGE_PAGES}" == true ]]; then
-            configure_huge_pages
-        fi
-        nested_virt_config
-        prepare_metadata_files
-        disable_rp_filter
-        network_config
-        prepare_network
-        prepare_docker_config
-        install_required_packages
-        enable_iscsi
-        configure_ntp
-        configure_atop
-        workaround_default_forward_policy
-        install_docker
-        cache_images
-        download_bundles
-        join_node worker
-        install_kubectl
-        wait_for_node
-        set_node_labels
-        collect_ceph_metadata
-        configure_contrack
-        disable_iptables_for_bridges
-        collect_interfaces_metadata
-        if [[ "${LVM_LOOP_DEVICE_SIZE}" -gt 0 ]]; then
-            configure_lvm
-        fi
-        ;;
-    spare)
-        prepare_metadata_files
-        disable_rp_filter
-        network_config
-        prepare_network
-        prepare_docker_config
-        install_required_packages
-        configure_ntp
-        configure_atop
-        install_docker
-        cache_images
-        download_bundles
-        workaround_default_forward_policy
-        configure_contrack
-        disable_iptables_for_bridges
-        ;;
-    frr)
-        prepare_metadata_files
-        disable_rp_filter
-        network_config
-        prepare_network
-        prepare_docker_config
-        install_required_packages
-        configure_ntp
-        configure_atop
-        install_docker
-        cache_images
-        download_bundles
-        workaround_default_forward_policy
-        configure_contrack
-        disable_iptables_for_bridges
-        install_frr
-        ;;
-    *)
-        echo "Usage: $0 {ucp|master|worker}"
-        exit 1
-esac
+            ;;
+        worker)
+            if [[ "${CONFIGURE_HUGE_PAGES}" == true ]]; then
+                configure_huge_pages
+            fi
+            nested_virt_config
+            prepare_metadata_files
+            disable_rp_filter
+            network_config
+            prepare_network
+            prepare_docker_config
+            install_required_packages
+            enable_iscsi
+            configure_ntp
+            configure_atop
+            workaround_default_forward_policy
+            install_docker
+            cache_images
+            download_bundles
+            join_node worker
+            install_kubectl
+            wait_for_node
+            set_node_labels
+            collect_ceph_metadata
+            configure_contrack
+            disable_iptables_for_bridges
+            collect_interfaces_metadata
+            if [[ "${LVM_LOOP_DEVICE_SIZE}" -gt 0 ]]; then
+                configure_lvm
+            fi
+            ;;
+        spare)
+            prepare_metadata_files
+            disable_rp_filter
+            network_config
+            prepare_network
+            prepare_docker_config
+            install_required_packages
+            configure_ntp
+            configure_atop
+            install_docker
+            cache_images
+            download_bundles
+            workaround_default_forward_policy
+            configure_contrack
+            disable_iptables_for_bridges
+            ;;
+        frr)
+            prepare_metadata_files
+            disable_rp_filter
+            network_config
+            prepare_network
+            prepare_docker_config
+            install_required_packages
+            configure_ntp
+            configure_atop
+            install_docker
+            cache_images
+            download_bundles
+            workaround_default_forward_policy
+            configure_contrack
+            disable_iptables_for_bridges
+            install_frr
+            ;;
+        *)
+            echo "Usage: $0 {ucp|master|worker}"
+            exit 1
+    esac
 
-wait_condition_send "SUCCESS" "Instance successfuly started." "${HW_METADATA}"
+    wait_condition_send "SUCCESS" "Instance successfuly started." "${HW_METADATA}"
+fi
