fix 7
This commit is contained in:
@ -1,16 +1,22 @@
|
|||||||
---
|
---
|
||||||
# guacamole-server-Version/-Quelle und FreeRDP-Dev-Paket fuer den
|
# Installationsweg wird in tasks/main.yml automatisch anhand von
|
||||||
# Quellcode-Build (siehe tasks/main.yml). Leer lassen = automatische
|
# ansible_distribution bestimmt: Ubuntu -> apt-Paket (guacd liegt dort in
|
||||||
# Erkennung anhand der Ziel-Distribution:
|
# "universe"), Debian -> Quellcode-Build (kein apt-Paket verfuegbar).
|
||||||
|
#
|
||||||
|
# Die folgenden Variablen wirken sich NUR auf den Debian-Quellcode-Pfad aus.
|
||||||
|
# Leer lassen = automatische Erkennung anhand der Debian-Version:
|
||||||
# - Debian 12 (bookworm): FreeRDP2 (freerdp2-dev) + guacamole-server
|
# - Debian 12 (bookworm): FreeRDP2 (freerdp2-dev) + guacamole-server
|
||||||
# 1.5.5 (offizieller Release-Tarball, Checksum-verifiziert).
|
# 1.5.5 (offizieller Release-Tarball, Checksum-verifiziert).
|
||||||
# - Debian 13 (trixie) oder neuer: FreeRDP3 (freerdp3-dev). Da der letzte
|
# - Debian 13 (trixie) oder neuer: FreeRDP3 (freerdp3-dev). Da der letzte
|
||||||
# offizielle guacamole-server-Release (1.6.0) nicht gegen trixies
|
# offizielle guacamole-server-Release (1.6.0) nicht gegen trixies
|
||||||
# FreeRDP 3.15 baut, wird stattdessen der "main"-Branch (git) gebaut
|
# FreeRDP 3.15 baut, wird stattdessen der "main"-Branch (git) gebaut
|
||||||
# -- s. ausfuehrlicher Warnhinweis in tasks/main.yml. Sobald ein
|
# -- s. ausfuehrlicher Warnhinweis in tasks/main.yml. Getestet (Stand
|
||||||
# Guacamole-Release mit funktionierender FreeRDP-3.15-Unterstuetzung
|
# Aug 2026) baut auch "main" NICHT erfolgreich gegen FreeRDP 3.15; fuer
|
||||||
# erscheint, hier guacd_version auf diesen Tag setzen, um wieder auf
|
# produktive Debian-13-Hosts daher eher Ubuntu oder Debian 12
|
||||||
# den stabilen Release-Tarball-Pfad zu wechseln (auch auf Debian 13).
|
# verwenden. Sobald ein Guacamole-Release mit funktionierender
|
||||||
|
# FreeRDP-3.15-Unterstuetzung erscheint, hier guacd_version auf diesen
|
||||||
|
# Tag setzen, um wieder auf den stabilen Release-Tarball-Pfad zu
|
||||||
|
# wechseln (auch auf Debian 13).
|
||||||
guacd_version: ""
|
guacd_version: ""
|
||||||
guacd_freerdp_dev_package: ""
|
guacd_freerdp_dev_package: ""
|
||||||
|
|
||||||
|
|||||||
@ -2,43 +2,50 @@
|
|||||||
# guacd + FreeRDP als reine Protokoll-Engine fuer RDP (Konzept 3/4.3).
|
# guacd + FreeRDP als reine Protokoll-Engine fuer RDP (Konzept 3/4.3).
|
||||||
# Laeuft ausschliesslich lokal gebunden, kein Netzwerkzugriff von aussen.
|
# Laeuft ausschliesslich lokal gebunden, kein Netzwerkzugriff von aussen.
|
||||||
#
|
#
|
||||||
# guacd gibt es fuer Debian (Bookworm und aelter) als apt-Paket bislang NICHT
|
# Installationsweg haengt vom Ziel-OS ab:
|
||||||
# (nur Ubuntu paketiert es ueber die "universe"-Komponente). Daher wird guacd
|
|
||||||
# hier gemaess der offiziellen Apache-Guacamole-Doku
|
|
||||||
# ("Installing Guacamole natively") aus dem Quellcode gebaut. Nur das
|
|
||||||
# RDP-Plugin wird aktiviert (FreeRDP-Dev-Header vorhanden, kein VNC/Telnet),
|
|
||||||
# passend zum reinen RDP-Einsatzzweck dieses Jumphosts.
|
|
||||||
#
|
#
|
||||||
# FreeRDP-Paketname und Build-Quelle haengen vom Ziel-OS ab:
|
# - Ubuntu (22.04/24.04): hat ein fertiges apt-Paket ("guacd",
|
||||||
|
# "libguac-client-rdp0", ueber die "universe"-Komponente). Zwar mit
|
||||||
|
# veralteter Version (1.3.0), aber offiziell von Ubuntu gepflegt und
|
||||||
|
# bekommt automatisch Sicherheitsupdates ueber unattended-upgrades (da
|
||||||
|
# dynamisch gegen libfreerdp2 gelinkt). Daher hier bevorzugt.
|
||||||
|
#
|
||||||
|
# - Debian: hat KEIN guacd-apt-Paket (weder bookworm noch trixie -- nur
|
||||||
|
# Ubuntu paketiert es ueber "universe"). Daher wird guacd hier gemaess der
|
||||||
|
# offiziellen Apache-Guacamole-Doku ("Installing Guacamole natively") aus
|
||||||
|
# dem Quellcode gebaut. Nur das RDP-Plugin wird aktiviert
|
||||||
|
# (FreeRDP-Dev-Header vorhanden, kein VNC/Telnet), passend zum reinen
|
||||||
|
# RDP-Einsatzzweck dieses Jumphosts.
|
||||||
|
#
|
||||||
|
# FreeRDP-Paketname und Build-Quelle haengen dabei von der Debian-Version ab:
|
||||||
#
|
#
|
||||||
# - Debian 12 (bookworm): liefert nur FreeRDP2 (freerdp2-dev). Dafuer wird
|
# - Debian 12 (bookworm): liefert nur FreeRDP2 (freerdp2-dev). Dafuer wird
|
||||||
# der offizielle guacamole-server-1.5.5-Release-Tarball gebaut (stabil,
|
# der offizielle guacamole-server-1.5.5-Release-Tarball gebaut (stabil,
|
||||||
# Checksum-verifiziert).
|
# Checksum-verifiziert).
|
||||||
#
|
#
|
||||||
# - Debian 13 (trixie): liefert nur FreeRDP3 (freerdp3-dev), und zwar bereits
|
# - Debian 13 (trixie): liefert nur FreeRDP3 (freerdp3-dev), und zwar
|
||||||
# Version 3.15 -- das ist NEUER als das, wogegen der letzte offizielle
|
# bereits Version 3.15 -- NEUER als das, wogegen der letzte offizielle
|
||||||
# guacamole-server-Release (1.6.0) geschrieben wurde. Der 1.6.0-Tarball
|
# guacamole-server-Release (1.6.0) geschrieben wurde. Sowohl der
|
||||||
# baut gegen trixies FreeRDP3 nicht (u.a. entfernter "->input"-Member auf
|
# 1.6.0-Tarball als auch der aktuelle "main"-Branch (git, Stand: Aug 2026)
|
||||||
# rdpFreerdp, s. https://issues.apache.org/jira/browse/GUACAMOLE-2146 und
|
# bauen NICHT gegen trixies FreeRDP3 (u.a. entfernter "->input"-Member
|
||||||
# diverse Debian-13-Install-Guides, die genau das bestaetigen). Es gibt
|
# auf rdpFreerdp, s. https://issues.apache.org/jira/browse/GUACAMOLE-2146
|
||||||
# noch KEIN Release mit funktionierender FreeRDP-3.15-Unterstuetzung.
|
# und diverse Debian-13-Install-Guides, die genau das bestaetigen).
|
||||||
# Daher wird hier stattdessen der guacamole-server-"main"-Branch (git,
|
# Es gibt noch KEIN Release oder git-main-Stand mit funktionierender
|
||||||
# Standard-Branch des apache/guacamole-server-Repos) gebaut, in der
|
# FreeRDP-3.15-Unterstuetzung. Der git-main-Pfad bleibt hier dennoch als
|
||||||
# Hoffnung/Annahme, dass dort bereits Anpassungen an neuere
|
# Option bestehen (fuer den Fall, dass ein zukuenftiger Commit das
|
||||||
# FreeRDP-3.x-APIs eingeflossen sind.
|
# behebt), ist aber AUSDRUECKLICH KEIN von Apache Guacamole empfohlener
|
||||||
#
|
# Weg (Doku: "please not a non-release version from git") und aktuell
|
||||||
# ACHTUNG: Das ist AUSDRUECKLICH KEIN von Apache Guacamole empfohlener Weg
|
# NICHT funktionsfaehig getestet. Fuer produktive Debian-13-Hosts also
|
||||||
# (Doku: "please not a non-release version from git") -- kein stabiler
|
# bis auf Weiteres eher Ubuntu oder Debian 12 als Zielsystem waehlen.
|
||||||
# Versions-Tag, keine Checksum-Verifikation moeglich, kann durch Aenderungen
|
# Sobald ein Fix verfuegbar ist: guacd_git_ref auf den entsprechenden
|
||||||
# an "main" jederzeit brechen oder unerwartetes Verhalten zeigen. Sobald
|
# Commit/Branch setzen, oder bei einem echten Release guacd_version auf
|
||||||
# ein Guacamole-Release mit getesteter FreeRDP-3.15-Unterstuetzung
|
# den Tag setzen (erzwingt den stabilen Release-Tarball-Pfad).
|
||||||
# erscheint, sollte per group_vars auf einen festen Tag zurueckgestellt
|
|
||||||
# werden (guacd_version: "x.y.z" erzwingt den Release-Tarball-Pfad, auch
|
|
||||||
# auf Debian 13). guacd_git_ref erlaubt es, statt "main" einen anderen
|
|
||||||
# Branch/Tag/Commit zu bauen.
|
|
||||||
|
|
||||||
- name: FreeRDP-Paket, Build-Modus (Release-Tag vs. git-main) und Version anhand der Distribution bestimmen
|
- name: Installationsweg (apt vs. Quellcode) und ggf. FreeRDP-Paket/Version anhand der Distribution bestimmen
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
|
_guacd_install_mode: "{{ 'apt' if ansible_distribution == 'Ubuntu' else 'source' }}"
|
||||||
|
_guacd_build_needed: false
|
||||||
|
_guacd_src_dir: ""
|
||||||
_guacd_freerdp_pkg: >-
|
_guacd_freerdp_pkg: >-
|
||||||
{{ guacd_freerdp_dev_package
|
{{ guacd_freerdp_dev_package
|
||||||
if (guacd_freerdp_dev_package | default('', true) | length > 0)
|
if (guacd_freerdp_dev_package | default('', true) | length > 0)
|
||||||
@ -54,6 +61,19 @@
|
|||||||
_guacd_version: "{{ guacd_version if (guacd_version | default('', true) | length > 0) else '1.5.5' }}"
|
_guacd_version: "{{ guacd_version if (guacd_version | default('', true) | length > 0) else '1.5.5' }}"
|
||||||
_guacd_git_ref: "{{ guacd_git_ref | default('main') }}"
|
_guacd_git_ref: "{{ guacd_git_ref | default('main') }}"
|
||||||
|
|
||||||
|
# --- apt-Pfad (Ubuntu) ------------------------------------------------------
|
||||||
|
|
||||||
|
- name: guacd und FreeRDP-Plugin per apt installieren (Ubuntu: guacd liegt in "universe")
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- guacd
|
||||||
|
- libguac-client-rdp0
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
when: _guacd_install_mode == 'apt'
|
||||||
|
|
||||||
|
# --- Quellcode-Pfad (Debian) -------------------------------------------------
|
||||||
|
|
||||||
- name: Build-Abhaengigkeiten fuer guacd installieren
|
- name: Build-Abhaengigkeiten fuer guacd installieren
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name:
|
name:
|
||||||
@ -75,26 +95,19 @@
|
|||||||
- libtool
|
- libtool
|
||||||
state: present
|
state: present
|
||||||
update_cache: true
|
update_cache: true
|
||||||
|
when: _guacd_install_mode == 'source'
|
||||||
|
|
||||||
- name: Dedizierten guacd-User anlegen (frueher vom Debian/Ubuntu-Paket erledigt)
|
- name: Vorhandene guacd-Quellcode-Installation pruefen
|
||||||
ansible.builtin.user:
|
|
||||||
name: guacd
|
|
||||||
system: true
|
|
||||||
shell: /usr/sbin/nologin
|
|
||||||
create_home: false
|
|
||||||
|
|
||||||
- name: Vorhandene guacd-Installation pruefen
|
|
||||||
ansible.builtin.stat:
|
ansible.builtin.stat:
|
||||||
path: /usr/local/sbin/guacd
|
path: /usr/local/sbin/guacd
|
||||||
register: _guacd_bin
|
register: _guacd_bin
|
||||||
|
when: _guacd_install_mode == 'source'
|
||||||
# --- Release-Tarball-Pfad (Debian 12 / expliziter Versions-Override) -------
|
|
||||||
|
|
||||||
- name: Installierte guacd-Version ermitteln (Release-Pfad)
|
- name: Installierte guacd-Version ermitteln (Release-Pfad)
|
||||||
ansible.builtin.command: /usr/local/sbin/guacd -v
|
ansible.builtin.command: /usr/local/sbin/guacd -v
|
||||||
register: _guacd_installed_version
|
register: _guacd_installed_version
|
||||||
changed_when: false
|
changed_when: false
|
||||||
when: _guacd_bin.stat.exists and _guacd_build_mode == 'release'
|
when: _guacd_install_mode == 'source' and _guacd_bin.stat.exists and _guacd_build_mode == 'release'
|
||||||
|
|
||||||
- name: guacamole-server Quellcode-Tarball herunterladen
|
- name: guacamole-server Quellcode-Tarball herunterladen
|
||||||
ansible.builtin.get_url:
|
ansible.builtin.get_url:
|
||||||
@ -103,7 +116,7 @@
|
|||||||
checksum: "sha256:https://archive.apache.org/dist/guacamole/{{ _guacd_version }}/source/guacamole-server-{{ _guacd_version }}.tar.gz.sha256"
|
checksum: "sha256:https://archive.apache.org/dist/guacamole/{{ _guacd_version }}/source/guacamole-server-{{ _guacd_version }}.tar.gz.sha256"
|
||||||
mode: "0644"
|
mode: "0644"
|
||||||
when: >-
|
when: >-
|
||||||
_guacd_build_mode == 'release' and
|
_guacd_install_mode == 'source' and _guacd_build_mode == 'release' and
|
||||||
((not _guacd_bin.stat.exists) or (_guacd_version not in (_guacd_installed_version.stdout | default(''))))
|
((not _guacd_bin.stat.exists) or (_guacd_version not in (_guacd_installed_version.stdout | default(''))))
|
||||||
|
|
||||||
- name: guacamole-server Tarball entpacken
|
- name: guacamole-server Tarball entpacken
|
||||||
@ -113,16 +126,14 @@
|
|||||||
remote_src: true
|
remote_src: true
|
||||||
creates: "/usr/local/src/guacamole-server-{{ _guacd_version }}/configure"
|
creates: "/usr/local/src/guacamole-server-{{ _guacd_version }}/configure"
|
||||||
when: >-
|
when: >-
|
||||||
_guacd_build_mode == 'release' and
|
_guacd_install_mode == 'source' and _guacd_build_mode == 'release' and
|
||||||
((not _guacd_bin.stat.exists) or (_guacd_version not in (_guacd_installed_version.stdout | default(''))))
|
((not _guacd_bin.stat.exists) or (_guacd_version not in (_guacd_installed_version.stdout | default(''))))
|
||||||
|
|
||||||
- name: Feststellen, ob (Neu-)Build noetig ist (Release-Pfad)
|
- name: Feststellen, ob (Neu-)Build noetig ist (Release-Pfad)
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
_guacd_build_needed: "{{ (not _guacd_bin.stat.exists) or (_guacd_version not in (_guacd_installed_version.stdout | default(''))) }}"
|
_guacd_build_needed: "{{ (not _guacd_bin.stat.exists) or (_guacd_version not in (_guacd_installed_version.stdout | default(''))) }}"
|
||||||
_guacd_src_dir: "/usr/local/src/guacamole-server-{{ _guacd_version }}"
|
_guacd_src_dir: "/usr/local/src/guacamole-server-{{ _guacd_version }}"
|
||||||
when: _guacd_build_mode == 'release'
|
when: _guacd_install_mode == 'source' and _guacd_build_mode == 'release'
|
||||||
|
|
||||||
# --- git-main-Pfad (Debian 13, s. Warnhinweis oben) -------------------------
|
|
||||||
|
|
||||||
- name: guacamole-server-Quellcode (git {{ _guacd_git_ref }}) holen/aktualisieren
|
- name: guacamole-server-Quellcode (git {{ _guacd_git_ref }}) holen/aktualisieren
|
||||||
ansible.builtin.git:
|
ansible.builtin.git:
|
||||||
@ -131,21 +142,19 @@
|
|||||||
version: "{{ _guacd_git_ref }}"
|
version: "{{ _guacd_git_ref }}"
|
||||||
force: true
|
force: true
|
||||||
register: _guacd_git
|
register: _guacd_git
|
||||||
when: _guacd_build_mode == 'git'
|
when: _guacd_install_mode == 'source' and _guacd_build_mode == 'git'
|
||||||
|
|
||||||
- name: Feststellen, ob (Neu-)Build noetig ist (git-Pfad)
|
- name: Feststellen, ob (Neu-)Build noetig ist (git-Pfad)
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
_guacd_build_needed: "{{ (not _guacd_bin.stat.exists) or _guacd_git.changed }}"
|
_guacd_build_needed: "{{ (not _guacd_bin.stat.exists) or _guacd_git.changed }}"
|
||||||
_guacd_src_dir: /usr/local/src/guacamole-server-git
|
_guacd_src_dir: /usr/local/src/guacamole-server-git
|
||||||
when: _guacd_build_mode == 'git'
|
when: _guacd_install_mode == 'source' and _guacd_build_mode == 'git'
|
||||||
|
|
||||||
- name: Build-System aus configure.ac generieren (autoreconf, nur git-Pfad)
|
- name: Build-System aus configure.ac generieren (autoreconf, nur git-Pfad)
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: autoreconf -fi
|
cmd: autoreconf -fi
|
||||||
chdir: "{{ _guacd_src_dir }}"
|
chdir: "{{ _guacd_src_dir }}"
|
||||||
when: _guacd_build_mode == 'git' and _guacd_build_needed
|
when: _guacd_install_mode == 'source' and _guacd_build_mode == 'git' and _guacd_build_needed
|
||||||
|
|
||||||
# --- Gemeinsame Build-Schritte (beide Pfade) --------------------------------
|
|
||||||
|
|
||||||
- name: guacamole-server konfigurieren (nur RDP-Plugin, kein VNC/Telnet/guacenc)
|
- name: guacamole-server konfigurieren (nur RDP-Plugin, kein VNC/Telnet/guacenc)
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
@ -153,29 +162,38 @@
|
|||||||
./configure --with-systemd-dir=/etc/systemd/system
|
./configure --with-systemd-dir=/etc/systemd/system
|
||||||
--disable-guacenc --disable-guaclog
|
--disable-guacenc --disable-guaclog
|
||||||
chdir: "{{ _guacd_src_dir }}"
|
chdir: "{{ _guacd_src_dir }}"
|
||||||
when: _guacd_build_needed
|
when: _guacd_install_mode == 'source' and _guacd_build_needed
|
||||||
|
|
||||||
- name: guacamole-server kompilieren
|
- name: guacamole-server kompilieren
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "make -j{{ ansible_processor_vcpus | default(2) }}"
|
cmd: "make -j{{ ansible_processor_vcpus | default(2) }}"
|
||||||
chdir: "{{ _guacd_src_dir }}"
|
chdir: "{{ _guacd_src_dir }}"
|
||||||
when: _guacd_build_needed
|
when: _guacd_install_mode == 'source' and _guacd_build_needed
|
||||||
changed_when: true
|
changed_when: true
|
||||||
|
|
||||||
- name: guacamole-server installieren (make install)
|
- name: guacamole-server installieren (make install)
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: make install
|
cmd: make install
|
||||||
chdir: "{{ _guacd_src_dir }}"
|
chdir: "{{ _guacd_src_dir }}"
|
||||||
when: _guacd_build_needed
|
when: _guacd_install_mode == 'source' and _guacd_build_needed
|
||||||
notify:
|
notify:
|
||||||
- reload systemd
|
- reload systemd
|
||||||
- restart guacd
|
- restart guacd
|
||||||
|
|
||||||
- name: Shared-Library-Cache aktualisieren (ldconfig)
|
- name: Shared-Library-Cache aktualisieren (ldconfig)
|
||||||
ansible.builtin.command: ldconfig
|
ansible.builtin.command: ldconfig
|
||||||
when: _guacd_build_needed
|
when: _guacd_install_mode == 'source' and _guacd_build_needed
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
|
# --- Gemeinsame Konfiguration (beide Pfade) ---------------------------------
|
||||||
|
|
||||||
|
- name: Dedizierten guacd-User sicherstellen (apt-Paket legt ihn i.d.R. bereits an)
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: guacd
|
||||||
|
system: true
|
||||||
|
shell: /usr/sbin/nologin
|
||||||
|
create_home: false
|
||||||
|
|
||||||
- name: guacd nur an localhost binden
|
- name: guacd nur an localhost binden
|
||||||
ansible.builtin.lineinfile:
|
ansible.builtin.lineinfile:
|
||||||
path: /etc/guacamole/guacd.conf
|
path: /etc/guacamole/guacd.conf
|
||||||
|
|||||||
Reference in New Issue
Block a user