diff --git a/de/heat-templates/scripts/instance_boot.sh b/de/heat-templates/scripts/instance_boot.sh
index dfeafab..b8689db 100644
--- a/de/heat-templates/scripts/instance_boot.sh
+++ b/de/heat-templates/scripts/instance_boot.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 set -x
+set -e
 # allow access to the local variables from prepare-metadata.py
 set -a
 
@@ -220,11 +221,13 @@
         local device_num=$1
         local device_size=$2
         local vg_name=$3
-
-        #configure lvm only on compute nodes
-        if [[ ${NODE_METADATA} == *"openstack-compute-node"* ]]; then
-            truncate --size ${device_size}G /srv/disk${device_num}
-            cat <<EOF > /etc/systemd/system/setup-loopback-loop${device_num}.service
+        if losetup -l | grep /dev/loop${device_num}; then
+        echo "Volume /dev/loop${device_num} is already initialize"
+        else
+            #configure lvm only on compute nodes
+            if [[ ${NODE_METADATA} == *"openstack-compute-node"* ]]; then
+                truncate --size ${device_size}G /srv/disk${device_num}
+                cat <<EOF > /etc/systemd/system/setup-loopback-loop${device_num}.service
 [Unit]
 Description=Setup loop${device_num} device
 DefaultDependencies=no
@@ -240,12 +243,13 @@
 [Install]
 WantedBy=local-fs.target
 EOF
-            systemctl enable setup-loopback-loop${device_num}
-            systemctl start setup-loopback-loop${device_num}
-            #adding short sleep to give time for service to start
-            sleep 3
-            pvcreate /dev/loop${device_num}
-            vgcreate ${vg_name} /dev/loop${device_num}
+                systemctl enable setup-loopback-loop${device_num}
+                systemctl start setup-loopback-loop${device_num}
+                #adding short sleep to give time for service to start
+                sleep 3
+                pvcreate /dev/loop${device_num}
+                vgcreate ${vg_name} /dev/loop${device_num}
+            fi
         fi
     }
 
@@ -309,19 +313,22 @@
 }
 
 function install_ucp {
-    local tmpd
-    tmpd=$(mktemp -d)
-    function docker_run_retry {
-        docker container run --rm --name ucp \
-        -v /var/run/docker.sock:/var/run/docker.sock \
-        ${DOCKER_UCP_IMAGE} install \
-        --host-address $UCP_IP_ADDRESS \
-        --admin-username $UCP_USERNAME \
-        --admin-password $UCP_PASSWORD \
-        --existing-config
-    }
-
-    retry 10 "Can't bring up docker UCP container" docker_run_retry
+    if docker ps --all | grep ucp-controller; then
+        echo "Docker UCP container is running"
+    else
+        local tmpd
+        tmpd=$(mktemp -d)
+        function docker_run_retry {
+            docker container run --rm --name ucp \
+            -v /var/run/docker.sock:/var/run/docker.sock \
+            ${DOCKER_UCP_IMAGE} install \
+            --host-address $UCP_IP_ADDRESS \
+            --admin-username $UCP_USERNAME \
+            --admin-password $UCP_PASSWORD \
+            --existing-config
+        }
+        retry 10 "Can't bring up docker UCP container" docker_run_retry
+    fi
 }
 
 function get_authtoken_retry {
@@ -365,18 +372,25 @@
 }
 
 function join_node {
-    local type=${1}
-    function retry_join_node {
-        env -i $(docker swarm join-token $type |grep 'docker swarm join' | xargs)
-    }
-    retry 10 "Failed to join node to swarm" retry_join_node
+    if kubectl --kubeconfig /etc/kubernetes/admin.conf get nodes |grep -w Ready |awk '{print $1}' |grep -q $(hostname); then
+        echo "This node is already join"
+    else
+        local type=${1}
+        function retry_join_node {
+            env -i $(docker swarm join-token $type |grep 'docker swarm join' | xargs)
+        }
+        retry 10 "Failed to join node to swarm" retry_join_node
+    fi
 }
 
 function create_ucp_config {
     if [[ "${SINGLE_NODE}" == true ]]; then
         max_pods="kubelet_max_pods = 220"
     fi
-    echo "
+    if docker config ls | grep com.docker.ucp.config ; then
+        echo "Config com.docker.ucp.config already exists"
+    else
+        echo "
 [scheduling_configuration]
     enable_admin_ucp_scheduling = true
     default_node_orchestrator = \"kubernetes\"
@@ -384,10 +398,15 @@
     dns = [\"172.18.208.44\"]
     ${max_pods}
 " | docker config create com.docker.ucp.config -
+    fi
 }
 
 function swarm_init {
-    docker swarm init --advertise-addr ${UCP_IP_ADDRESS} --data-path-addr ${UCP_IP_ADDRESS} --listen-addr ${UCP_IP_ADDRESS} --data-path-port ${UCP_DOCKER_SWARM_DATA_PORT}
+    if docker node ls | grep $HOSTNAME; then
+        echo "This node is already part of a swarm"
+    else
+        docker swarm init --advertise-addr ${UCP_IP_ADDRESS} --data-path-addr ${UCP_IP_ADDRESS} --listen-addr ${UCP_IP_ADDRESS} --data-path-port ${UCP_DOCKER_SWARM_DATA_PORT}
+    fi
 }
 
 function rm_ucp_config {
@@ -454,16 +473,19 @@
 }
 
 function workaround_default_forward_policy {
-    cat << EOF > /etc/iptables/rules.v4
+    if grep "DOCKER-USER" /etc/iptables/rules.v4; then
+        echo "Iptables is already configurations"
+    else
+        cat << EOF > /etc/iptables/rules.v4
 *filter
 :DOCKER-USER - [0:0]
 EOF
-    for net in $FLOATING_NETWORK_PREFIXES; do
+        for net in $FLOATING_NETWORK_PREFIXES; do
 cat << EOF >> /etc/iptables/rules.v4
 -A DOCKER-USER -d ${net} -j ACCEPT
 -A DOCKER-USER -s ${net} -j ACCEPT
 EOF
-    done
+        done
 
 cat << EOF >> /etc/iptables/rules.v4
 -A DOCKER-USER -j RETURN
@@ -475,16 +497,17 @@
 *nat
 :POSTROUTING ACCEPT - [0:0]
 EOF
-    for net in $FLOATING_NETWORK_PREFIXES; do
+        for net in $FLOATING_NETWORK_PREFIXES; do
 cat << EOF >> /etc/iptables/rules.v4
 -A POSTROUTING -s ${net} -o ${DEFAULT_INTERFACE} -j MASQUERADE
 EOF
-    done
+        done
 
 cat << EOF >> /etc/iptables/rules.v4
 COMMIT
 EOF
-    sudo netfilter-persistent reload
+        sudo netfilter-persistent reload
+    fi
 }
 
 function disable_rp_filter {
