From 400d3e62be9cedb05a76ae4647bc8cff1f7b99db Mon Sep 17 00:00:00 2001 From: Midas Wollinger Date: Wed, 19 Aug 2026 23:40:49 +0200 Subject: [PATCH] fix 3 --- ansible/roles/guacd/defaults/main.yml | 11 +++--- ansible/roles/guacd/tasks/main.yml | 49 ++++++++++++++++++++------- 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/ansible/roles/guacd/defaults/main.yml b/ansible/roles/guacd/defaults/main.yml index ca95666..e11f41a 100644 --- a/ansible/roles/guacd/defaults/main.yml +++ b/ansible/roles/guacd/defaults/main.yml @@ -1,5 +1,8 @@ --- -# Version des guacamole-server-Quellcode-Tarballs (siehe tasks/main.yml). -# Passend zu guacamole-common-js@1.5 im Frontend (scripts/fetch_frontend_assets.sh) -# auf dem letzten 1.5.x-Patchlevel halten. -guacd_version: "1.5.5" +# guacamole-server-Version und FreeRDP-Dev-Paket fuer den Quellcode-Build +# (siehe tasks/main.yml). Leer lassen = automatische Erkennung anhand der +# Ziel-Distribution (Debian 12/bookworm -> FreeRDP2 + guacamole-server 1.5.5; +# Debian 13/trixie -> FreeRDP3 + guacamole-server 1.6.0). Hier oder in +# group_vars ueberschreiben, um eine bestimmte Kombination zu erzwingen. +guacd_version: "" +guacd_freerdp_dev_package: "" diff --git a/ansible/roles/guacd/tasks/main.yml b/ansible/roles/guacd/tasks/main.yml index c538dd7..cd1240a 100644 --- a/ansible/roles/guacd/tasks/main.yml +++ b/ansible/roles/guacd/tasks/main.yml @@ -8,6 +8,31 @@ # ("Installing Guacamole natively") aus dem Quellcode-Tarball gebaut. Nur das # RDP-Plugin wird aktiviert (FreeRDP-Dev-Header vorhanden, kein VNC/Telnet), # passend zum reinen RDP-Einsatzzweck dieses Jumphosts. +# +# FreeRDP-Paketname und guacamole-server-Version haengen vom Ziel-OS ab: +# Debian 12 (bookworm) liefert nur FreeRDP2 (freerdp2-dev) -- dafuer reicht +# guacamole-server 1.5.x. Debian 13 (trixie) liefert nur FreeRDP3 +# (freerdp3-dev, freerdp2-dev existiert dort nicht mehr) -- dafuer wird +# mindestens guacamole-server 1.6.0 benoetigt, dessen configure-Skript +# FreeRDP2 *und* FreeRDP3 per pkg-config automatisch erkennt (kein +# zusaetzliches Configure-Flag noetig, s. configure.ac PKG_CHECK_MODULES). +# Per group_vars ueberschreibbar (guacd_version / guacd_freerdp_dev_package), +# falls eine andere Kombination erzwungen werden soll. + +- name: FreeRDP-Paket und guacamole-server-Version anhand der Distribution bestimmen + ansible.builtin.set_fact: + _guacd_freerdp_pkg: >- + {{ guacd_freerdp_dev_package + if (guacd_freerdp_dev_package | default('', true) | length > 0) + else ('freerdp3-dev' + if (ansible_distribution == 'Debian' and ansible_distribution_major_version | int >= 13) + else 'freerdp2-dev') }} + _guacd_version: >- + {{ guacd_version + if (guacd_version | default('', true) | length > 0) + else ('1.6.0' + if (ansible_distribution == 'Debian' and ansible_distribution_major_version | int >= 13) + else '1.5.5') }} - name: Build-Abhaengigkeiten fuer guacd installieren ansible.builtin.apt: @@ -20,7 +45,7 @@ - uuid-dev - libpango1.0-dev - libssl-dev - - freerdp2-dev + - "{{ _guacd_freerdp_pkg }}" - pkg-config - wget - ca-certificates @@ -41,28 +66,28 @@ - name: Installierte guacd-Version ermitteln ansible.builtin.command: /usr/local/sbin/guacd -v - register: _guacd_version + register: _guacd_installed_version changed_when: false when: _guacd_bin.stat.exists - name: Feststellen, ob (Neu-)Build noetig ist ansible.builtin.set_fact: - _guacd_build_needed: "{{ (not _guacd_bin.stat.exists) or (guacd_version not in (_guacd_version.stdout | default(''))) }}" + _guacd_build_needed: "{{ (not _guacd_bin.stat.exists) or (_guacd_version not in (_guacd_installed_version.stdout | default(''))) }}" - name: guacamole-server Quellcode-Tarball herunterladen ansible.builtin.get_url: - url: "https://archive.apache.org/dist/guacamole/{{ guacd_version }}/source/guacamole-server-{{ guacd_version }}.tar.gz" - dest: "/usr/local/src/guacamole-server-{{ guacd_version }}.tar.gz" - checksum: "sha512:https://archive.apache.org/dist/guacamole/{{ guacd_version }}/source/guacamole-server-{{ guacd_version }}.tar.gz.sha512" + url: "https://archive.apache.org/dist/guacamole/{{ _guacd_version }}/source/guacamole-server-{{ _guacd_version }}.tar.gz" + dest: "/usr/local/src/guacamole-server-{{ _guacd_version }}.tar.gz" + checksum: "sha512:https://archive.apache.org/dist/guacamole/{{ _guacd_version }}/source/guacamole-server-{{ _guacd_version }}.tar.gz.sha512" mode: "0644" when: _guacd_build_needed - name: guacamole-server Tarball entpacken ansible.builtin.unarchive: - src: "/usr/local/src/guacamole-server-{{ guacd_version }}.tar.gz" + src: "/usr/local/src/guacamole-server-{{ _guacd_version }}.tar.gz" dest: /usr/local/src remote_src: true - creates: "/usr/local/src/guacamole-server-{{ guacd_version }}/configure" + creates: "/usr/local/src/guacamole-server-{{ _guacd_version }}/configure" when: _guacd_build_needed - name: guacamole-server konfigurieren (nur RDP-Plugin, kein VNC/Telnet/guacenc) @@ -70,21 +95,21 @@ cmd: >- ./configure --with-systemd-dir=/etc/systemd/system --disable-guacenc --disable-guaclog - chdir: "/usr/local/src/guacamole-server-{{ guacd_version }}" - creates: "/usr/local/src/guacamole-server-{{ guacd_version }}/Makefile" + chdir: "/usr/local/src/guacamole-server-{{ _guacd_version }}" + creates: "/usr/local/src/guacamole-server-{{ _guacd_version }}/Makefile" when: _guacd_build_needed - name: guacamole-server kompilieren ansible.builtin.command: cmd: "make -j{{ ansible_processor_vcpus | default(2) }}" - chdir: "/usr/local/src/guacamole-server-{{ guacd_version }}" + chdir: "/usr/local/src/guacamole-server-{{ _guacd_version }}" when: _guacd_build_needed changed_when: true - name: guacamole-server installieren (make install) ansible.builtin.command: cmd: make install - chdir: "/usr/local/src/guacamole-server-{{ guacd_version }}" + chdir: "/usr/local/src/guacamole-server-{{ _guacd_version }}" when: _guacd_build_needed notify: - reload systemd