- name: Ensure marker directory exists ansible.builtin.file: path: /run/tuxflotte/agent/applied state: directory mode: "0755" # Allgemeine Update-Taktung (nicht zu verwechseln mit der Rolle # "security-updates", die als eigenständiges Härtungs-Merkmal NUR # Security-Patches automatisiert - diese Rolle steuert die Taktung für # ALLE Paketaktualisierungen). Nutzt denselben apt-Periodic-Mechanismus, # aber eine ANDERE Datei (10periodic statt 20auto-upgrades), damit sich # beide Rollen nicht gegenseitig überschreiben. # tuxflotte_optionen.intervall: taeglich/woechentlich/monatlich/manuell # (Default woechentlich) - "manuell" deaktiviert die automatische # Aktualisierung komplett (Tage=0), App-Auswahl/Zeitpunkt bleibt beim # Nutzer. # # App-Update (Flatpak): flatpak selbst bringt keinen automatischen # Hintergrund-Update-Mechanismus mit (anders als apt) - ein eigener # systemd-Timer mit derselben Taktung übernimmt das hier mit, falls # Flatpak auf dem Gerät installiert ist (mehrere App-Store-Merkmale nutzen # es, siehe brave/gdevelop/turbowarp). - name: Taktung in Tagen aus der Option ableiten ansible.builtin.set_fact: tuxflotte_update_tage: >- {{ {'taeglich': 1, 'woechentlich': 7, 'monatlich': 30, 'manuell': 0}[ tuxflotte_optionen.intervall | default('woechentlich') ] }} - name: apt-Periodic-Taktung setzen ansible.builtin.copy: dest: /etc/apt/apt.conf.d/10periodic content: | APT::Periodic::Update-Package-Lists "{{ tuxflotte_update_tage }}"; APT::Periodic::Download-Upgradeable-Packages "{{ tuxflotte_update_tage }}"; APT::Periodic::AutocleanInterval "{{ tuxflotte_update_tage }}"; mode: "0644" when: tuxflotte_state == "present" - name: Prüfen, ob Flatpak installiert ist ansible.builtin.stat: path: /usr/bin/flatpak register: tuxflotte_flatpak_binary when: tuxflotte_state == "present" - name: Flatpak-Auto-Update-Timer einrichten (falls Flatpak vorhanden) ansible.builtin.cron: name: "tuxflotte-flatpak-auto-update" special_time: "{{ 'daily' if (tuxflotte_update_tage | int) == 1 else 'weekly' if (tuxflotte_update_tage | int) == 7 else 'monthly' }}" job: "/usr/bin/flatpak update --noninteractive" when: tuxflotte_state == "present" and tuxflotte_flatpak_binary.stat.exists and (tuxflotte_update_tage | int) > 0 - name: Flatpak-Auto-Update-Timer entfernen (falls "manuell" gewählt) ansible.builtin.cron: name: "tuxflotte-flatpak-auto-update" state: absent when: tuxflotte_state == "present" and (tuxflotte_update_tage | int) == 0 - name: Record that the auto-update role ran ansible.builtin.copy: dest: /run/tuxflotte/agent/applied/auto-update.marker content: "{{ ansible_date_time.iso8601 }}: {{ tuxflotte_optionen.intervall | default('woechentlich') }}\n" mode: "0644" when: tuxflotte_state == "present" - name: apt-Periodic-Taktung entfernen (Auftrag abgewählt) ansible.builtin.file: path: /etc/apt/apt.conf.d/10periodic state: absent when: tuxflotte_state == "absent" - name: Flatpak-Auto-Update-Timer entfernen (Auftrag abgewählt) ansible.builtin.cron: name: "tuxflotte-flatpak-auto-update" state: absent when: tuxflotte_state == "absent" - name: auto-update-Marker entfernen (Auftrag abgewählt) ansible.builtin.file: path: /run/tuxflotte/agent/applied/auto-update.marker state: absent when: tuxflotte_state == "absent"