Files
ansible-content-stabil/site.yml
T
adminandClaude Sonnet 5 572a8039bd 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-09 13:24:00 +02:00

311 lines
9.8 KiB
YAML

- hosts: localhost
connection: local
become: true
vars:
# Vom Agenten per --extra-vars gesetzt (siehe ADR-0010, provisioning-server
# Check-in-Response "auftraege"): Rollenname -> "present"/"absent". Rollen,
# die hier nicht auftauchen (z.B. weil sie nur workspace-komponiert sind),
# bleiben beim Default "present" - unverändert additives Verhalten.
tuxflotte_auftrag_states: {}
# Rollenname -> optionen-Dict aus der Auswahl-API (device_merkmale.optionen),
# z.B. {"standardbrowser": true} bei brave. Rein additiv, opak für den
# Server/Agenten - nur die jeweilige Rolle kennt die Bedeutung.
tuxflotte_auftrag_optionen: {}
tasks:
- include_role:
name: guest-session
apply:
tags: guest-session
vars:
tuxflotte_state: "{{ tuxflotte_auftrag_states.get('guest-session', 'present') }}"
tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('guest-session', {}) }}"
tags: guest-session
- include_role:
name: brave
apply:
tags: brave
vars:
tuxflotte_state: "{{ tuxflotte_auftrag_states.get('brave', 'present') }}"
tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('brave', {}) }}"
tags: brave
- include_role:
name: onlyoffice
apply:
tags: onlyoffice
vars:
tuxflotte_state: "{{ tuxflotte_auftrag_states.get('onlyoffice', 'present') }}"
tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('onlyoffice', {}) }}"
tags: onlyoffice
- include_role:
name: libreoffice
apply:
tags: libreoffice
vars:
tuxflotte_state: "{{ tuxflotte_auftrag_states.get('libreoffice', 'present') }}"
tuxflotte_optionen: "{{ tuxflotte_auftrag_optionen.get('libreoffice', {}) }}"
tags: libreoffice
- include_role:
name: google-earth
apply:
tags: google-earth
vars:
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