Explorar o código

ct/podman-homeassistant.sh - added container update and purge images (#1304)

Added podman container(s) update.
Added removing unused images.
glerak %!s(int64=2) %!d(string=hai) anos
pai
achega
1b0ec6b87d
Modificáronse 1 ficheiros con 60 adicións e 38 borrados
  1. 60 38
      ct/podman-homeassistant.sh

+ 60 - 38
ct/podman-homeassistant.sh

@@ -57,58 +57,80 @@ function default_settings() {
 function update_script() {
   if [[ ! -f /etc/systemd/system/homeassistant.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
   UPD=$(whiptail --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
-  "1" "Update Podman" ON \
+  "1" "Update system and containers" ON \
   "2" "Install HACS" OFF \
   "3" "Install FileBrowser" OFF \
+  "4" "Remove ALL Unused Images" OFF \
   3>&1 1>&2 2>&3)
 header_info
 if [ "$UPD" == "1" ]; then
-msg_info "Updating ${APP} LXC"
-apt-get update &>/dev/null
-apt-get -y upgrade &>/dev/null
-msg_ok "Updated ${APP} LXC"
-msg_ok "Update Successfull"
-exit
+  msg_info "Updating ${APP} LXC"
+  apt-get update &>/dev/null
+  apt-get -y upgrade &>/dev/null
+  msg_ok "Updated ${APP} LXC"
+  msg_ok "Update os system Successfull"
+
+  msg_info "Updating All Containers\n"
+  CONTAINER_LIST="${1:-$(podman ps -q)}"
+  for container in ${CONTAINER_LIST}; do
+    CONTAINER_IMAGE="$(podman inspect --format "{{.Config.Image}}" --type container ${container})"
+    RUNNING_IMAGE="$(podman inspect --format "{{.Image}}" --type container "${container}")"
+    podman pull "docker.io/${CONTAINER_IMAGE}"
+    LATEST_IMAGE="$(podman inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
+    if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
+      echo "Updating ${container} image ${CONTAINER_IMAGE}"
+      systemctl restart homeassistant
+    fi
+  done
+  msg_ok "All containers updated."
+  exit
 fi
 if [ "$UPD" == "2" ]; then
-msg_info "Installing Home Assistant Comunity Store (HACS)"
-apt update &>/dev/null
-apt install unzip &>/dev/null
-cd /var/lib/containers/storage/volumes/hass_config/_data
-bash <(curl -fsSL https://get.hacs.xyz) &>/dev/null
-msg_ok "Installed Home Assistant Comunity Store (HACS)"
-echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
-exit
+  msg_info "Installing Home Assistant Comunity Store (HACS)"
+  apt update &>/dev/null
+  apt install unzip &>/dev/null
+  cd /var/lib/containers/storage/volumes/hass_config/_data
+  bash <(curl -fsSL https://get.hacs.xyz) &>/dev/null
+  msg_ok "Installed Home Assistant Comunity Store (HACS)"
+  echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
+  exit
 fi
 if [ "$UPD" == "3" ]; then
-IP=$(hostname -I | awk '{print $1}') 
-msg_info "Installing FileBrowser"
-curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash &>/dev/null
-filebrowser config init -a '0.0.0.0' &>/dev/null
-filebrowser config set -a '0.0.0.0' &>/dev/null
-filebrowser users add admin changeme --perm.admin &>/dev/null
-msg_ok "Installed FileBrowser"
+  IP=$(hostname -I | awk '{print $1}') 
+  msg_info "Installing FileBrowser"
+  curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash &>/dev/null
+  filebrowser config init -a '0.0.0.0' &>/dev/null
+  filebrowser config set -a '0.0.0.0' &>/dev/null
+  filebrowser users add admin changeme --perm.admin &>/dev/null
+  msg_ok "Installed FileBrowser"
 
-msg_info "Creating Service"
-service_path="/etc/systemd/system/filebrowser.service"
-echo "[Unit]
-Description=Filebrowser
-After=network-online.target
-[Service]
-User=root
-WorkingDirectory=/root/
-ExecStart=/usr/local/bin/filebrowser -r /
-[Install]
-WantedBy=default.target" >$service_path
+  msg_info "Creating Service"
+  service_path="/etc/systemd/system/filebrowser.service"
+  echo "[Unit]
+  Description=Filebrowser
+  After=network-online.target
+  [Service]
+    User=root
+    WorkingDirectory=/root/
+    ExecStart=/usr/local/bin/filebrowser -r /
+  [Install]
+    WantedBy=default.target" >$service_path
 
-systemctl enable --now filebrowser.service &>/dev/null
-msg_ok "Created Service"
+    systemctl enable --now filebrowser.service &>/dev/null
+    msg_ok "Created Service"
 
-msg_ok "Completed Successfully!\n"
-echo -e "FileBrowser should be reachable by going to the following URL.
+    msg_ok "Completed Successfully!\n"
+    echo -e "FileBrowser should be reachable by going to the following URL.
          ${BL}http://$IP:8080${CL}   admin|changeme\n"
-exit
+  exit
 fi
+if [ "$UPD" == "4" ]; then
+  msg_info "Removing ALL Unused Images"
+  podman image prune -a -f
+  msg_ok "Removed ALL Unused Images"
+  exit
+fi
+
 }
 
 start