diff --git a/setup/ha_setup.sh b/setup/ha_setup.sh index 027f7880..be05712d 100644 --- a/setup/ha_setup.sh +++ b/setup/ha_setup.sh @@ -52,6 +52,9 @@ apt-get -qqy install \ curl \ 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" DOCKER_CONFIG_PATH='/etc/docker/daemon.json' mkdir -p $(dirname $DOCKER_CONFIG_PATH) @@ -93,31 +96,29 @@ docker run -d \ --net=host \ 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" rm /etc/motd