Update automatisieren?

Hallo,

ich überlege meine Updates zu automatisieren. Die Idee ist, am 28 die aktuelle Version zu installieren. Es läuft auf einer VM, welche Wöchentlich gebackupt wird.

Das ist mein Script, wie findet ihr das? macht jemand von euch das schon? Und was wird empfohlen?

alias: “System: Monatsende-Update gehärtet (Add-ons, HACS, Core & OS)”
description: “Installiert am 28. des Monats Updates gestaffelt. Schließt Hardware-/Firmware-Updates aus Sicherheitsgründen aus.”

trigger:
  - platform: time
    at: "08:00:00"
    id: addons_hacs
  - platform: time
    at: "08:30:00"
    id: core
  - platform: time
    at: "09:30:00"
    id: os
condition:
  - condition: template
    value_template: "{{ now().day == 28 }}"
action:
  - choose:
      # ==========================================================
      # PHASE 1: Add-ons & HACS (08:00 Uhr)
      # Ausgeschlossen: Core, OS, ESPHome und Firmware-Updates
      # ==========================================================
      - conditions:
          - condition: trigger
            id: addons_hacs
        sequence:
          - alias: "Nur Software-Add-ons & HACS aktualisieren (Keine Hardware-Firmware!)"
            repeat:
              for_each: >-
                {{ states.update 
                   | selectattr('state', 'eq', 'on') 
                   | rejectattr('entity_id', 'in', ['update.home_assistant_core_update', 'update.home_assistant_operating_system_update']) 
                   | rejectattr('entity_id', 'search', 'esphome|firmware|wled|zigbee|zwave') 
                   | map(attribute='entity_id') 
                   | list }}
              sequence:
                - action: update.install
                  target:
                    entity_id: "{{ repeat.item }}"
                  continue_on_error: true
                - delay:
                    seconds: 30

      # ==========================================================
      # PHASE 2: Home Assistant Core (08:30 Uhr)
      # ==========================================================
      - conditions:
          - condition: trigger
            id: core
          - condition: state
            entity_id: update.home_assistant_core_update
            state: "on"
        sequence:
          - alias: "Core-Update inkl. Backup installieren"
            action: update.install
            target:
              entity_id: update.home_assistant_core_update
            data:
              backup: true

      # ==========================================================
      # PHASE 3: Betriebssystem HAOS (09:30 Uhr - 60 Min. Puffer für DB-Migrationen)
      # ==========================================================
      - conditions:
          - condition: trigger
            id: os
          - condition: state
            entity_id: update.home_assistant_operating_system_update
            state: "on"
        sequence:
          - alias: "OS-Update inkl. Backup installieren"
            action: update.install
            target:
              entity_id: update.home_assistant_operating_system_update
            data:
              backup: true
mode: single

Kannst du machen, würde ich aber nicht machen.

Wie lange behältst du Backups?
Wenn du am 27. für 3 Wochen in Urlaub fliegst und dann irgendetwas schief geht kannst du nichts machen.

Nur weil du bist zum 28. wartest, aber keine Release Notes liest werden Backward-incompatible changes von eine Update nicht verschwinden!

Meinst du nicht auch das 8 - 9:30 eine Zeit ist in der man zuhause sein könnte und sich dann wundert warum Automation nicht funktionieren? z.B. am Wochenende

LG

Warum nimmst kein fertiges Blueprint “Home Assistant Auto-update” und richtest den Kalender passend dazu dann ein, wann die Updates laufen sollen.

Ich mache für meinen HA überhaupt keine Updates mehr manuell, sondern das dies über die Automatisierung jeden Samstag morgen laufen.

1 „Gefällt mir“

Hi,
hast du einen Link zu dem Blueprint, den du nutzt?
Danke und Grüße
Franky

Würde ich nicht empfehlen.
Solche system Updates sollten grundsätzlich Manuel ausgeführt und überwacht werden.

Gruss

1 „Gefällt mir“

Und ganz wichtig, neben dem obligatorischen Backup vor jedem Update. Ist es mehr als ratsam sich die Breaking Changes durchzulesen.

Gruß Osorkon

5 „Gefällt mir“

Ganz ehrlich, hast du zuviel Zeit.
Meinst bei uns in der Firma setzt sich jeden Monat einer hin und updatet hunderte Server manuell - so was wird weg-automatisiert und genauso mache ich das zuhause.
Und falls was schief geht, dafür gibt es Backups

Also meine Erfahrungen mit Updates verbieten mir eine Automatisation.
Erst mal lesen, was alles geändert wurde um sicher zu sein, dass mein System damit klar kommt.
Wenn mein System damit vermutlich klar kommt ist das auch noch nicht absolut sicher. Kommt es wirklich klar, dann kann es passieren, dass ich meine Files von z.B. ESPHome nicht mehr neu kompilieren kann ohne den Code komplett neu anzupassen.

Bei uns in einem Grossen Elektronik Betrieb hatten wir nur den Backup Automatisiert.
Updates wurden immer geprüft und getestet und dann via Backupserver verteilt und überwacht.

Kann das Script oder der BluePrint nicht nach “Breaking Changes” scahuen? Mit KI oder so? Und dann updaten wenn alles in Ordnug ist? Oder 2 Wochen danach, wenn in Foren nichts fehlerhaftes auftaucht?

oder

Sollte man sonst einfach mehrere Versionen abwarten und dann nur alle 3 Monate updaten?

Die heissen nicht umsonst “breaking” changes, die in den release notes publiziert werden. HA ist NICHT automatisiert updatefähig, das muss man klar sagen. Es wird schlicht von den Machern erwartet, dass man die major Updates vorher checkt. Sonst geht schnell alles schief und du sitzt im besten Fall mit ein paar ausgefallenen Integrationen da.

Generell sollte sich der Thread-Initiator fragen, warum er Updates automatisieren möchte. Ziel ist eine funktionierende Hausautomation, nicht der neueste Patchsstand an sich. Ohne manuelles Eingreifen hat er von neuen Funktionen eh nichts. Es ist wohl dem Hype geschuldet, das Softwarestände gefühlt nicht altern dürfen. Das ist jedoch die falsche Zielvorstellung.

Bei uns in der Firma werden die Updates für die internen Patchzyklen freigegeben und dann automatisch verteilt, erst die Entwicklungsumgebung, dann eine Woche später die Testsysteme und noch eine Woche später die Produktionssysteme , inkl. anschliessender Reboots in definierten Wartungsfenster ( nachts oder am Wochenende )
Wir reden von eine Anzahl im 4-stelligen Bereich virtueller Server ( Windows und Linux inkl. großer Datenbankserver )

Für den Falls, das Updates Probleme machen, fällt das schnell auf den Entwicklungs- und spätestens Testsysteme auf, bevor der Updatezyklus die Produktionssysteme erreicht.
Backups werden eh täglich automatisch erstellt und falls man Updates ne Maschine schrotten, wird die eben restored - das sind eingespielte und getestete Prozesse, ich kann mich nicht erinnern, wann die das letzte Mal notwendig war.

Für sowas unwichtiges, wie mein HomeAssistant fang ich garnicht erst an, jeden Tag nachzuschauen, welche Integration mal wieder ein Update braucht es nach einem HA-Update den 10.Patch gibt - da läuft einmal in der Woche der Auto-Update drüber und gut ist.

Mal so einem kleiner aus der IT-Praxis, man sollte tunlichst nicht jedem Update hinterherrennen und direkt installieren, das erspart viel Stress und Probleme ( hochkritische Sicherheitsupdates mal abgesehen - das ist aber ein Sonderfall )

Also doch geprüft (freigabe) und nicht blind eingespielt.
So machen wir das auch.

Nö, da wird nicht getestet, nur freigegeben, was installiert wird, z.b. auch Softwareupdates.