From 572a8039bd922d20bd95642fc322c3b18d6188b4 Mon Sep 17 00:00:00 2001 From: Thomas Stallinger Date: Wed, 9 Sep 2026 13:24:00 +0200 Subject: [PATCH] Phase 2: 28 neue App-Store-Merkmale (regulaere apt-Pakete) Erste Batch des Merkmal-Ausbaus (siehe Roadmap-Plan, Memory project_phase2_app_store_merkmale): 28 Ansible-Rollen fuer Apps mit regulaerem Debian/Ubuntu-Paket (per apt-cache auf einer echten Debian-trixie-Quelle verifiziert, nicht aus dem Gedaechtnis geraten). apt/deb bewusst statt Flatpak (Nutzer-Entscheidung 09.09.2026, kehrt die bisherige brave/libreoffice/onlyoffice-Praxis fuer alle NEUEN Rollen um). Kein os_family-Zweig noetig - alle drei Ziel-Backends (mint-image/debian-image/ubuntu-image) sind Debian-Familie, Fedora bewusst ausgeklammert. Rollen: gimp, inkscape, scribus, librecad (Kreativ/Grafik); audacity, musescore, metronome, minuet (Musik/Audio); stellarium, octave, kalgebra, kalzium, kbruch, step, tuxmath, filius, gcompris (Bildung Mathe/Naturwissenschaft); ktouch, kwordquiz, kanagram, tuxtype, foliate (Bildung Sprache/Schreiben); evolution (Buero); kturtle, fritzing (Programmieren/Making); remmina (Internet); geogebra, marble (Unterrichtswerkzeuge). Jede Rolle folgt dem bestehenden Muster (Marker-Datei unter /run/tuxflotte/agent/applied/, present/absent-Verzweigung auf tuxflotte_state) - alle 33 site.yml-Bloecke + alle Rollen-tasks als YAML geparst verifiziert. Gehoert zusammen mit admin/provisioning-server-Migration 0030 (Merkmal- +Blueprint-DB-Eintraege, live auf anode angewendet+verifiziert). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9 --- roles/audacity/defaults/main.yml | 1 + roles/audacity/tasks/main.yml | 39 +++++ roles/evolution/defaults/main.yml | 1 + roles/evolution/tasks/main.yml | 39 +++++ roles/filius/defaults/main.yml | 1 + roles/filius/tasks/main.yml | 39 +++++ roles/foliate/defaults/main.yml | 1 + roles/foliate/tasks/main.yml | 39 +++++ roles/fritzing/defaults/main.yml | 1 + roles/fritzing/tasks/main.yml | 39 +++++ roles/gcompris/defaults/main.yml | 1 + roles/gcompris/tasks/main.yml | 39 +++++ roles/geogebra/defaults/main.yml | 1 + roles/geogebra/tasks/main.yml | 39 +++++ roles/gimp/defaults/main.yml | 1 + roles/gimp/tasks/main.yml | 39 +++++ roles/inkscape/defaults/main.yml | 1 + roles/inkscape/tasks/main.yml | 39 +++++ roles/kalgebra/defaults/main.yml | 1 + roles/kalgebra/tasks/main.yml | 39 +++++ roles/kalzium/defaults/main.yml | 1 + roles/kalzium/tasks/main.yml | 39 +++++ roles/kanagram/defaults/main.yml | 1 + roles/kanagram/tasks/main.yml | 39 +++++ roles/kbruch/defaults/main.yml | 1 + roles/kbruch/tasks/main.yml | 39 +++++ roles/ktouch/defaults/main.yml | 1 + roles/ktouch/tasks/main.yml | 39 +++++ roles/kturtle/defaults/main.yml | 1 + roles/kturtle/tasks/main.yml | 39 +++++ roles/kwordquiz/defaults/main.yml | 1 + roles/kwordquiz/tasks/main.yml | 39 +++++ roles/librecad/defaults/main.yml | 1 + roles/librecad/tasks/main.yml | 39 +++++ roles/marble/defaults/main.yml | 1 + roles/marble/tasks/main.yml | 39 +++++ roles/metronome/defaults/main.yml | 1 + roles/metronome/tasks/main.yml | 39 +++++ roles/minuet/defaults/main.yml | 1 + roles/minuet/tasks/main.yml | 39 +++++ roles/musescore/defaults/main.yml | 1 + roles/musescore/tasks/main.yml | 39 +++++ roles/octave/defaults/main.yml | 1 + roles/octave/tasks/main.yml | 39 +++++ roles/remmina/defaults/main.yml | 1 + roles/remmina/tasks/main.yml | 39 +++++ roles/scribus/defaults/main.yml | 1 + roles/scribus/tasks/main.yml | 39 +++++ roles/stellarium/defaults/main.yml | 1 + roles/stellarium/tasks/main.yml | 39 +++++ roles/step/defaults/main.yml | 1 + roles/step/tasks/main.yml | 39 +++++ roles/tuxmath/defaults/main.yml | 1 + roles/tuxmath/tasks/main.yml | 39 +++++ roles/tuxtype/defaults/main.yml | 1 + roles/tuxtype/tasks/main.yml | 39 +++++ site.yml | 252 +++++++++++++++++++++++++++++ 57 files changed, 1372 insertions(+) create mode 100644 roles/audacity/defaults/main.yml create mode 100644 roles/audacity/tasks/main.yml create mode 100644 roles/evolution/defaults/main.yml create mode 100644 roles/evolution/tasks/main.yml create mode 100644 roles/filius/defaults/main.yml create mode 100644 roles/filius/tasks/main.yml create mode 100644 roles/foliate/defaults/main.yml create mode 100644 roles/foliate/tasks/main.yml create mode 100644 roles/fritzing/defaults/main.yml create mode 100644 roles/fritzing/tasks/main.yml create mode 100644 roles/gcompris/defaults/main.yml create mode 100644 roles/gcompris/tasks/main.yml create mode 100644 roles/geogebra/defaults/main.yml create mode 100644 roles/geogebra/tasks/main.yml create mode 100644 roles/gimp/defaults/main.yml create mode 100644 roles/gimp/tasks/main.yml create mode 100644 roles/inkscape/defaults/main.yml create mode 100644 roles/inkscape/tasks/main.yml create mode 100644 roles/kalgebra/defaults/main.yml create mode 100644 roles/kalgebra/tasks/main.yml create mode 100644 roles/kalzium/defaults/main.yml create mode 100644 roles/kalzium/tasks/main.yml create mode 100644 roles/kanagram/defaults/main.yml create mode 100644 roles/kanagram/tasks/main.yml create mode 100644 roles/kbruch/defaults/main.yml create mode 100644 roles/kbruch/tasks/main.yml create mode 100644 roles/ktouch/defaults/main.yml create mode 100644 roles/ktouch/tasks/main.yml create mode 100644 roles/kturtle/defaults/main.yml create mode 100644 roles/kturtle/tasks/main.yml create mode 100644 roles/kwordquiz/defaults/main.yml create mode 100644 roles/kwordquiz/tasks/main.yml create mode 100644 roles/librecad/defaults/main.yml create mode 100644 roles/librecad/tasks/main.yml create mode 100644 roles/marble/defaults/main.yml create mode 100644 roles/marble/tasks/main.yml create mode 100644 roles/metronome/defaults/main.yml create mode 100644 roles/metronome/tasks/main.yml create mode 100644 roles/minuet/defaults/main.yml create mode 100644 roles/minuet/tasks/main.yml create mode 100644 roles/musescore/defaults/main.yml create mode 100644 roles/musescore/tasks/main.yml create mode 100644 roles/octave/defaults/main.yml create mode 100644 roles/octave/tasks/main.yml create mode 100644 roles/remmina/defaults/main.yml create mode 100644 roles/remmina/tasks/main.yml create mode 100644 roles/scribus/defaults/main.yml create mode 100644 roles/scribus/tasks/main.yml create mode 100644 roles/stellarium/defaults/main.yml create mode 100644 roles/stellarium/tasks/main.yml create mode 100644 roles/step/defaults/main.yml create mode 100644 roles/step/tasks/main.yml create mode 100644 roles/tuxmath/defaults/main.yml create mode 100644 roles/tuxmath/tasks/main.yml create mode 100644 roles/tuxtype/defaults/main.yml create mode 100644 roles/tuxtype/tasks/main.yml diff --git a/roles/audacity/defaults/main.yml b/roles/audacity/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/audacity/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/audacity/tasks/main.yml b/roles/audacity/tasks/main.yml new file mode 100644 index 0000000..6576494 --- /dev/null +++ b/roles/audacity/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Audacity + ansible.builtin.apt: + name: audacity + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the audacity role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/audacity.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Audacity (Auftrag abgewählt) + ansible.builtin.apt: + name: audacity + state: absent + when: tuxflotte_state == "absent" + +- name: Remove audacity marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/audacity.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/evolution/defaults/main.yml b/roles/evolution/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/evolution/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/evolution/tasks/main.yml b/roles/evolution/tasks/main.yml new file mode 100644 index 0000000..16e5e05 --- /dev/null +++ b/roles/evolution/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Evolution + ansible.builtin.apt: + name: evolution + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the evolution role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/evolution.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Evolution (Auftrag abgewählt) + ansible.builtin.apt: + name: evolution + state: absent + when: tuxflotte_state == "absent" + +- name: Remove evolution marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/evolution.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/filius/defaults/main.yml b/roles/filius/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/filius/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/filius/tasks/main.yml b/roles/filius/tasks/main.yml new file mode 100644 index 0000000..103f0be --- /dev/null +++ b/roles/filius/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Filius + ansible.builtin.apt: + name: filius + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the filius role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/filius.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Filius (Auftrag abgewählt) + ansible.builtin.apt: + name: filius + state: absent + when: tuxflotte_state == "absent" + +- name: Remove filius marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/filius.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/foliate/defaults/main.yml b/roles/foliate/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/foliate/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/foliate/tasks/main.yml b/roles/foliate/tasks/main.yml new file mode 100644 index 0000000..4e66ca3 --- /dev/null +++ b/roles/foliate/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Foliate + ansible.builtin.apt: + name: foliate + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the foliate role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/foliate.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Foliate (Auftrag abgewählt) + ansible.builtin.apt: + name: foliate + state: absent + when: tuxflotte_state == "absent" + +- name: Remove foliate marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/foliate.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/fritzing/defaults/main.yml b/roles/fritzing/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/fritzing/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/fritzing/tasks/main.yml b/roles/fritzing/tasks/main.yml new file mode 100644 index 0000000..e958c10 --- /dev/null +++ b/roles/fritzing/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Fritzing + ansible.builtin.apt: + name: fritzing + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the fritzing role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/fritzing.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Fritzing (Auftrag abgewählt) + ansible.builtin.apt: + name: fritzing + state: absent + when: tuxflotte_state == "absent" + +- name: Remove fritzing marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/fritzing.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/gcompris/defaults/main.yml b/roles/gcompris/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/gcompris/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/gcompris/tasks/main.yml b/roles/gcompris/tasks/main.yml new file mode 100644 index 0000000..8c65a10 --- /dev/null +++ b/roles/gcompris/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install GCompris + ansible.builtin.apt: + name: gcompris-qt + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the gcompris role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/gcompris.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove GCompris (Auftrag abgewählt) + ansible.builtin.apt: + name: gcompris-qt + state: absent + when: tuxflotte_state == "absent" + +- name: Remove gcompris marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/gcompris.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/geogebra/defaults/main.yml b/roles/geogebra/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/geogebra/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/geogebra/tasks/main.yml b/roles/geogebra/tasks/main.yml new file mode 100644 index 0000000..b760714 --- /dev/null +++ b/roles/geogebra/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install GeoGebra + ansible.builtin.apt: + name: geogebra + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the geogebra role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/geogebra.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove GeoGebra (Auftrag abgewählt) + ansible.builtin.apt: + name: geogebra + state: absent + when: tuxflotte_state == "absent" + +- name: Remove geogebra marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/geogebra.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/gimp/defaults/main.yml b/roles/gimp/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/gimp/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/gimp/tasks/main.yml b/roles/gimp/tasks/main.yml new file mode 100644 index 0000000..0d30581 --- /dev/null +++ b/roles/gimp/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install GIMP + ansible.builtin.apt: + name: gimp + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the gimp role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/gimp.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove GIMP (Auftrag abgewählt) + ansible.builtin.apt: + name: gimp + state: absent + when: tuxflotte_state == "absent" + +- name: Remove gimp marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/gimp.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/inkscape/defaults/main.yml b/roles/inkscape/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/inkscape/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/inkscape/tasks/main.yml b/roles/inkscape/tasks/main.yml new file mode 100644 index 0000000..6540e66 --- /dev/null +++ b/roles/inkscape/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Inkscape + ansible.builtin.apt: + name: inkscape + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the inkscape role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/inkscape.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Inkscape (Auftrag abgewählt) + ansible.builtin.apt: + name: inkscape + state: absent + when: tuxflotte_state == "absent" + +- name: Remove inkscape marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/inkscape.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/kalgebra/defaults/main.yml b/roles/kalgebra/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/kalgebra/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/kalgebra/tasks/main.yml b/roles/kalgebra/tasks/main.yml new file mode 100644 index 0000000..4a63137 --- /dev/null +++ b/roles/kalgebra/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install KAlgebra + ansible.builtin.apt: + name: kalgebra + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the kalgebra role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/kalgebra.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove KAlgebra (Auftrag abgewählt) + ansible.builtin.apt: + name: kalgebra + state: absent + when: tuxflotte_state == "absent" + +- name: Remove kalgebra marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/kalgebra.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/kalzium/defaults/main.yml b/roles/kalzium/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/kalzium/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/kalzium/tasks/main.yml b/roles/kalzium/tasks/main.yml new file mode 100644 index 0000000..18ffa24 --- /dev/null +++ b/roles/kalzium/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install KAlzium + ansible.builtin.apt: + name: kalzium + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the kalzium role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/kalzium.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove KAlzium (Auftrag abgewählt) + ansible.builtin.apt: + name: kalzium + state: absent + when: tuxflotte_state == "absent" + +- name: Remove kalzium marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/kalzium.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/kanagram/defaults/main.yml b/roles/kanagram/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/kanagram/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/kanagram/tasks/main.yml b/roles/kanagram/tasks/main.yml new file mode 100644 index 0000000..282b79d --- /dev/null +++ b/roles/kanagram/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Kanagram + ansible.builtin.apt: + name: kanagram + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the kanagram role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/kanagram.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Kanagram (Auftrag abgewählt) + ansible.builtin.apt: + name: kanagram + state: absent + when: tuxflotte_state == "absent" + +- name: Remove kanagram marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/kanagram.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/kbruch/defaults/main.yml b/roles/kbruch/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/kbruch/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/kbruch/tasks/main.yml b/roles/kbruch/tasks/main.yml new file mode 100644 index 0000000..3c509f3 --- /dev/null +++ b/roles/kbruch/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install KBruch + ansible.builtin.apt: + name: kbruch + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the kbruch role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/kbruch.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove KBruch (Auftrag abgewählt) + ansible.builtin.apt: + name: kbruch + state: absent + when: tuxflotte_state == "absent" + +- name: Remove kbruch marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/kbruch.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/ktouch/defaults/main.yml b/roles/ktouch/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/ktouch/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/ktouch/tasks/main.yml b/roles/ktouch/tasks/main.yml new file mode 100644 index 0000000..db7284a --- /dev/null +++ b/roles/ktouch/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install KTouch + ansible.builtin.apt: + name: ktouch + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the ktouch role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/ktouch.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove KTouch (Auftrag abgewählt) + ansible.builtin.apt: + name: ktouch + state: absent + when: tuxflotte_state == "absent" + +- name: Remove ktouch marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/ktouch.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/kturtle/defaults/main.yml b/roles/kturtle/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/kturtle/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/kturtle/tasks/main.yml b/roles/kturtle/tasks/main.yml new file mode 100644 index 0000000..88ae9b6 --- /dev/null +++ b/roles/kturtle/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install KTurtle + ansible.builtin.apt: + name: kturtle + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the kturtle role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/kturtle.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove KTurtle (Auftrag abgewählt) + ansible.builtin.apt: + name: kturtle + state: absent + when: tuxflotte_state == "absent" + +- name: Remove kturtle marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/kturtle.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/kwordquiz/defaults/main.yml b/roles/kwordquiz/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/kwordquiz/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/kwordquiz/tasks/main.yml b/roles/kwordquiz/tasks/main.yml new file mode 100644 index 0000000..f9c41bf --- /dev/null +++ b/roles/kwordquiz/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install KWordQuiz + ansible.builtin.apt: + name: kwordquiz + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the kwordquiz role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/kwordquiz.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove KWordQuiz (Auftrag abgewählt) + ansible.builtin.apt: + name: kwordquiz + state: absent + when: tuxflotte_state == "absent" + +- name: Remove kwordquiz marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/kwordquiz.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/librecad/defaults/main.yml b/roles/librecad/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/librecad/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/librecad/tasks/main.yml b/roles/librecad/tasks/main.yml new file mode 100644 index 0000000..24d29f8 --- /dev/null +++ b/roles/librecad/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install LibreCAD + ansible.builtin.apt: + name: librecad + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the librecad role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/librecad.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove LibreCAD (Auftrag abgewählt) + ansible.builtin.apt: + name: librecad + state: absent + when: tuxflotte_state == "absent" + +- name: Remove librecad marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/librecad.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/marble/defaults/main.yml b/roles/marble/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/marble/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/marble/tasks/main.yml b/roles/marble/tasks/main.yml new file mode 100644 index 0000000..29f79f6 --- /dev/null +++ b/roles/marble/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Marble + ansible.builtin.apt: + name: marble + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the marble role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/marble.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Marble (Auftrag abgewählt) + ansible.builtin.apt: + name: marble + state: absent + when: tuxflotte_state == "absent" + +- name: Remove marble marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/marble.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/metronome/defaults/main.yml b/roles/metronome/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/metronome/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/metronome/tasks/main.yml b/roles/metronome/tasks/main.yml new file mode 100644 index 0000000..3a4aa93 --- /dev/null +++ b/roles/metronome/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Metronom + ansible.builtin.apt: + name: gnome-metronome + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the metronome role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/metronome.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Metronom (Auftrag abgewählt) + ansible.builtin.apt: + name: gnome-metronome + state: absent + when: tuxflotte_state == "absent" + +- name: Remove metronome marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/metronome.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/minuet/defaults/main.yml b/roles/minuet/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/minuet/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/minuet/tasks/main.yml b/roles/minuet/tasks/main.yml new file mode 100644 index 0000000..6d81f74 --- /dev/null +++ b/roles/minuet/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Minuet + ansible.builtin.apt: + name: minuet + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the minuet role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/minuet.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Minuet (Auftrag abgewählt) + ansible.builtin.apt: + name: minuet + state: absent + when: tuxflotte_state == "absent" + +- name: Remove minuet marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/minuet.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/musescore/defaults/main.yml b/roles/musescore/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/musescore/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/musescore/tasks/main.yml b/roles/musescore/tasks/main.yml new file mode 100644 index 0000000..a57274f --- /dev/null +++ b/roles/musescore/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install MuseScore + ansible.builtin.apt: + name: musescore + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the musescore role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/musescore.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove MuseScore (Auftrag abgewählt) + ansible.builtin.apt: + name: musescore + state: absent + when: tuxflotte_state == "absent" + +- name: Remove musescore marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/musescore.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/octave/defaults/main.yml b/roles/octave/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/octave/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/octave/tasks/main.yml b/roles/octave/tasks/main.yml new file mode 100644 index 0000000..74f7bf8 --- /dev/null +++ b/roles/octave/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install GNU Octave + ansible.builtin.apt: + name: octave + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the octave role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/octave.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove GNU Octave (Auftrag abgewählt) + ansible.builtin.apt: + name: octave + state: absent + when: tuxflotte_state == "absent" + +- name: Remove octave marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/octave.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/remmina/defaults/main.yml b/roles/remmina/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/remmina/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/remmina/tasks/main.yml b/roles/remmina/tasks/main.yml new file mode 100644 index 0000000..68569ea --- /dev/null +++ b/roles/remmina/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Remmina + ansible.builtin.apt: + name: remmina + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the remmina role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/remmina.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Remmina (Auftrag abgewählt) + ansible.builtin.apt: + name: remmina + state: absent + when: tuxflotte_state == "absent" + +- name: Remove remmina marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/remmina.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/scribus/defaults/main.yml b/roles/scribus/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/scribus/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/scribus/tasks/main.yml b/roles/scribus/tasks/main.yml new file mode 100644 index 0000000..2c3d98b --- /dev/null +++ b/roles/scribus/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Scribus + ansible.builtin.apt: + name: scribus + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the scribus role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/scribus.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Scribus (Auftrag abgewählt) + ansible.builtin.apt: + name: scribus + state: absent + when: tuxflotte_state == "absent" + +- name: Remove scribus marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/scribus.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/stellarium/defaults/main.yml b/roles/stellarium/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/stellarium/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/stellarium/tasks/main.yml b/roles/stellarium/tasks/main.yml new file mode 100644 index 0000000..afb4e64 --- /dev/null +++ b/roles/stellarium/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Stellarium + ansible.builtin.apt: + name: stellarium + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the stellarium role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/stellarium.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Stellarium (Auftrag abgewählt) + ansible.builtin.apt: + name: stellarium + state: absent + when: tuxflotte_state == "absent" + +- name: Remove stellarium marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/stellarium.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/step/defaults/main.yml b/roles/step/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/step/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/step/tasks/main.yml b/roles/step/tasks/main.yml new file mode 100644 index 0000000..f74a4ac --- /dev/null +++ b/roles/step/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Step (Physik-Simulator) + ansible.builtin.apt: + name: step + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the step role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/step.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Step (Physik-Simulator) (Auftrag abgewählt) + ansible.builtin.apt: + name: step + state: absent + when: tuxflotte_state == "absent" + +- name: Remove step marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/step.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/tuxmath/defaults/main.yml b/roles/tuxmath/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/tuxmath/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/tuxmath/tasks/main.yml b/roles/tuxmath/tasks/main.yml new file mode 100644 index 0000000..acd98da --- /dev/null +++ b/roles/tuxmath/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Tux Math + ansible.builtin.apt: + name: tuxmath + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the tuxmath role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/tuxmath.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Tux Math (Auftrag abgewählt) + ansible.builtin.apt: + name: tuxmath + state: absent + when: tuxflotte_state == "absent" + +- name: Remove tuxmath marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/tuxmath.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/roles/tuxtype/defaults/main.yml b/roles/tuxtype/defaults/main.yml new file mode 100644 index 0000000..94c225a --- /dev/null +++ b/roles/tuxtype/defaults/main.yml @@ -0,0 +1 @@ +tuxflotte_state: present diff --git a/roles/tuxtype/tasks/main.yml b/roles/tuxtype/tasks/main.yml new file mode 100644 index 0000000..9baf9e5 --- /dev/null +++ b/roles/tuxtype/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Ensure marker directory exists + ansible.builtin.file: + path: /run/tuxflotte/agent/applied + state: directory + mode: "0755" + +# Reguläres Debian/Ubuntu-Paket (per apt-cache auf einer echten +# Debian-trixie-Quelle verifiziert, 09.09.2026) - kein Flatpak nötig, +# apt/deb hat laut Nutzer-Entscheidung ohnehin Vorrang. Nur die drei +# apt-basierten Backends (mint-image/debian-image/ubuntu-image) im Scope, +# kein os_family-Zweig nötig (Fedora bewusst ausgeklammert, siehe +# project_phase2_app_store_merkmale-Memory). + +- name: Install Tux Typing + ansible.builtin.apt: + name: tuxtype + state: present + update_cache: true + cache_valid_time: 3600 + when: tuxflotte_state == "present" + +- name: Record that the tuxtype role ran + ansible.builtin.copy: + dest: /run/tuxflotte/agent/applied/tuxtype.marker + content: "{{ ansible_date_time.iso8601 }}\n" + mode: "0644" + when: tuxflotte_state == "present" + +- name: Remove Tux Typing (Auftrag abgewählt) + ansible.builtin.apt: + name: tuxtype + state: absent + when: tuxflotte_state == "absent" + +- name: Remove tuxtype marker (Auftrag abgewählt) + ansible.builtin.file: + path: /run/tuxflotte/agent/applied/tuxtype.marker + state: absent + when: tuxflotte_state == "absent" diff --git a/site.yml b/site.yml index 28c86e3..0b267f5 100644 --- a/site.yml +++ b/site.yml @@ -56,3 +56,255 @@ tuxflotte_state: "{{ tuxflotte_auftrag_states.get('google-earth', 'present') }}" tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('google-earth', {}) }}" tags: google-earth + + - include_role: + name: gimp + apply: + tags: gimp + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('gimp', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('gimp', {}) }}" + tags: gimp + + - include_role: + name: inkscape + apply: + tags: inkscape + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('inkscape', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('inkscape', {}) }}" + tags: inkscape + + - include_role: + name: scribus + apply: + tags: scribus + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('scribus', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('scribus', {}) }}" + tags: scribus + + - include_role: + name: librecad + apply: + tags: librecad + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('librecad', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('librecad', {}) }}" + tags: librecad + + - include_role: + name: audacity + apply: + tags: audacity + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('audacity', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('audacity', {}) }}" + tags: audacity + + - include_role: + name: musescore + apply: + tags: musescore + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('musescore', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('musescore', {}) }}" + tags: musescore + + - include_role: + name: metronome + apply: + tags: metronome + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('metronome', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('metronome', {}) }}" + tags: metronome + + - include_role: + name: minuet + apply: + tags: minuet + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('minuet', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('minuet', {}) }}" + tags: minuet + + - include_role: + name: stellarium + apply: + tags: stellarium + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('stellarium', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('stellarium', {}) }}" + tags: stellarium + + - include_role: + name: octave + apply: + tags: octave + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('octave', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('octave', {}) }}" + tags: octave + + - include_role: + name: kalgebra + apply: + tags: kalgebra + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('kalgebra', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('kalgebra', {}) }}" + tags: kalgebra + + - include_role: + name: kalzium + apply: + tags: kalzium + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('kalzium', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('kalzium', {}) }}" + tags: kalzium + + - include_role: + name: kbruch + apply: + tags: kbruch + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('kbruch', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('kbruch', {}) }}" + tags: kbruch + + - include_role: + name: step + apply: + tags: step + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('step', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('step', {}) }}" + tags: step + + - include_role: + name: tuxmath + apply: + tags: tuxmath + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('tuxmath', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('tuxmath', {}) }}" + tags: tuxmath + + - include_role: + name: filius + apply: + tags: filius + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('filius', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('filius', {}) }}" + tags: filius + + - include_role: + name: gcompris + apply: + tags: gcompris + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('gcompris', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('gcompris', {}) }}" + tags: gcompris + + - include_role: + name: ktouch + apply: + tags: ktouch + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('ktouch', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('ktouch', {}) }}" + tags: ktouch + + - include_role: + name: kwordquiz + apply: + tags: kwordquiz + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('kwordquiz', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('kwordquiz', {}) }}" + tags: kwordquiz + + - include_role: + name: kanagram + apply: + tags: kanagram + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('kanagram', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('kanagram', {}) }}" + tags: kanagram + + - include_role: + name: tuxtype + apply: + tags: tuxtype + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('tuxtype', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('tuxtype', {}) }}" + tags: tuxtype + + - include_role: + name: foliate + apply: + tags: foliate + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('foliate', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('foliate', {}) }}" + tags: foliate + + - include_role: + name: evolution + apply: + tags: evolution + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('evolution', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('evolution', {}) }}" + tags: evolution + + - include_role: + name: kturtle + apply: + tags: kturtle + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('kturtle', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('kturtle', {}) }}" + tags: kturtle + + - include_role: + name: fritzing + apply: + tags: fritzing + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('fritzing', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('fritzing', {}) }}" + tags: fritzing + + - include_role: + name: remmina + apply: + tags: remmina + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('remmina', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('remmina', {}) }}" + tags: remmina + + - include_role: + name: geogebra + apply: + tags: geogebra + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('geogebra', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('geogebra', {}) }}" + tags: geogebra + + - include_role: + name: marble + apply: + tags: marble + vars: + tuxflotte_state: "{{ tuxflotte_auftrag_states.get('marble', 'present') }}" + tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('marble', {}) }}" + tags: marble