Browse Source

Update ha_setup.sh

tteckster 3 years ago
parent
commit
adf10bf927
1 changed files with 26 additions and 25 deletions
  1. 26 25
      setup/ha_setup.sh

+ 26 - 25
setup/ha_setup.sh

@@ -52,6 +52,9 @@ apt-get -qqy install \
     curl \
     curl \
     sudo &>/dev/null
     sudo &>/dev/null
 
 
+echo -e "${CHECKMARK} \e[1;92m Installing pip3... \e[0m"
+apt-get install -y python3-pip &>/dev/null
+
 echo -e "${CHECKMARK} \e[1;92m Installing Docker... \e[0m"
 echo -e "${CHECKMARK} \e[1;92m Installing Docker... \e[0m"
 DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
 DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
 mkdir -p $(dirname $DOCKER_CONFIG_PATH)
 mkdir -p $(dirname $DOCKER_CONFIG_PATH)
@@ -93,31 +96,29 @@ docker run -d \
   --net=host \
   --net=host \
   homeassistant/home-assistant:stable &>/dev/null
   homeassistant/home-assistant:stable &>/dev/null
 
 
-echo -e "${CHECKMARK} \e[1;92m Creating Update Script... \e[0m"
-file_path="/root/update.sh"
-echo "#!/bin/bash
-echo -e '\e[1;33m Pulling New Stable Version... \e[0m'
-docker pull homeassistant/home-assistant:stable
-echo -e '\e[1;33m Stopping Home Assistant... \e[0m'
-docker stop homeassistant
-echo -e '\e[1;33m Removing Home Assistant... \e[0m'
-docker rm homeassistant
-echo -e '\e[1;33m Starting Home Assistant... \e[0m'
-docker run -d \
-  --name homeassistant \
-  --privileged \
-  --restart unless-stopped \
-  -v /var/run/docker.sock:/var/run/docker.sock \
-  -v /dev:/dev \
-  -v hass_config:/config \
-  -v /etc/localtime:/etc/localtime:ro \
-  -v /etc/timezone:/etc/timezone:ro \
-  --net=host \
-  homeassistant/home-assistant:stable
-echo -e '\e[1;33m Removing Old Image... \e[0m'
-docker image prune -f
-echo -e '\e[1;33m Finished Update! \e[0m'" > $file_path
-sudo chmod +x /root/update.sh
+echo -e "${CHECKMARK} \e[1;92m Installing runlike... \e[0m"
+pip3 install runlike &>/dev/null
+
+echo -e "${CHECKMARK} \e[1;92m Creating Update-Containers Script... \e[0m"
+UPDATE_CONTAINERS_PATH='/root/update-containers.sh'
+cat >$UPDATE_CONTAINERS_PATH <<'EOF'
+#!/bin/bash
+set -o errexit
+CONTAINER_LIST="${1:-$(docker ps -q)}"
+for container in ${CONTAINER_LIST}; do
+  CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container ${container})"
+  RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")"
+  docker pull "${CONTAINER_IMAGE}"
+  LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
+  if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
+    echo "Updating ${container} image ${CONTAINER_IMAGE}"
+    DOCKER_COMMAND="$(runlike "${container}")"
+    docker rm --force "${container}"
+    eval ${DOCKER_COMMAND}
+  fi
+done
+EOF
+sudo chmod +x /root/update-containers.sh
 
 
 echo -e "${CHECKMARK} \e[1;92m Customizing LXC... \e[0m"
 echo -e "${CHECKMARK} \e[1;92m Customizing LXC... \e[0m"
 rm /etc/motd 
 rm /etc/motd