ci / test (push) Successful in 29s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
72 lines
3.4 KiB
YAML
72 lines
3.4 KiB
YAML
# RustDesk-Server (hbbs/hbbr) in k3s, Umzug vom Portainer-Stack „rustdesk“ auf appsrv08 (15.10.2026).
|
|
# Läuft auf ops: ansible-playbook playbooks/rustdesk-k3s.yml [-e rustdesk_public_host=<Adresse für Clients>]
|
|
#
|
|
# Voraussetzung: Schlüsselpaar des bisherigen Servers unter /root/.config/knaster/rustdesk/{id_ed25519,id_ed25519.pub}
|
|
# auf ops (aus dem Docker-Volume rustdesk_rustdesk-data von appsrv08, Pfad /root). Damit bleiben die in den
|
|
# Clients hinterlegten Public Keys gültig. Die Clients selbst zeigen weiter auf appsrv08, bis ihre
|
|
# Server-Adresse umgestellt wird (Installer-Name im Stack rustdesk-updater und bestehende Installationen).
|
|
- name: RustDesk nach k3s
|
|
hosts: localhost
|
|
connection: local
|
|
gather_facts: false
|
|
vars:
|
|
manifest: "{{ playbook_dir }}/../../../../deploy/k8s/rustdesk/rustdesk.yaml"
|
|
key_dir: /root/.config/knaster/rustdesk
|
|
# Adresse, die hbbs den Clients als Relay nennt (Port 21117). Standard: die k3s-VM; ServiceLB stellt die Ports
|
|
# auf jeder Knoten-Adresse bereit. Nach DHCP-Reservierung/DNS-Name hier bzw. per -e anpassen.
|
|
rustdesk_public_host: "{{ hostvars['k3s'].ansible_host }}"
|
|
tasks:
|
|
- name: Schlüsseldateien vorhanden?
|
|
ansible.builtin.stat:
|
|
path: "{{ key_dir }}/{{ item }}"
|
|
loop: [id_ed25519, id_ed25519.pub]
|
|
register: keys
|
|
failed_when: not keys.stat.exists
|
|
|
|
- name: Namespace
|
|
ansible.builtin.shell: >
|
|
kubectl create namespace rustdesk --dry-run=client -o yaml | kubectl apply -f -
|
|
register: ns
|
|
changed_when: "'created' in ns.stdout"
|
|
|
|
- name: Secret rustdesk-keys aus den Schlüsseldateien
|
|
ansible.builtin.shell: >
|
|
kubectl -n rustdesk create secret generic rustdesk-keys
|
|
--from-file=id_ed25519={{ key_dir }}/id_ed25519 --from-file=id_ed25519.pub={{ key_dir }}/id_ed25519.pub
|
|
--dry-run=client -o yaml | kubectl apply -f -
|
|
register: secret
|
|
changed_when: "'configured' in secret.stdout or 'created' in secret.stdout"
|
|
no_log: true
|
|
|
|
- name: Manifest mit Relay-Adresse anwenden
|
|
ansible.builtin.shell: >
|
|
sed 's/__RELAY_HOST__/{{ rustdesk_public_host }}/' {{ manifest }} | kubectl apply -f -
|
|
register: dep
|
|
changed_when: "'configured' in dep.stdout or 'created' in dep.stdout"
|
|
|
|
- name: Neustart, wenn sich nur das Secret geändert hat
|
|
ansible.builtin.command: kubectl -n rustdesk rollout restart deployment/rustdesk
|
|
when: secret.changed and not dep.changed
|
|
|
|
- name: Warten, bis bereit
|
|
ansible.builtin.command: kubectl -n rustdesk rollout status deployment/rustdesk --timeout=300s
|
|
changed_when: false
|
|
|
|
- name: Public Key im Cluster entspricht der Datei (Image hat keine Shell, daher über das Secret)
|
|
ansible.builtin.shell: >
|
|
set -o pipefail;
|
|
kubectl -n rustdesk get secret rustdesk-keys -o go-template='{{ "{{" }}index .data "id_ed25519.pub"{{ "}}" }}' | base64 -d | cmp - {{ key_dir }}/id_ed25519.pub
|
|
args: {executable: /bin/bash}
|
|
changed_when: false
|
|
|
|
- name: Ports von außen erreichbar (ID-Server 21116/tcp, Relay 21117/tcp auf {{ rustdesk_public_host }})
|
|
ansible.builtin.wait_for:
|
|
host: "{{ rustdesk_public_host }}"
|
|
port: "{{ item }}"
|
|
timeout: 30
|
|
loop: [21115, 21116, 21117, 21118, 21119]
|
|
|
|
- name: Ergebnis
|
|
ansible.builtin.debug:
|
|
msg: "RustDesk in k3s bereit: ID-Server/Relay {{ rustdesk_public_host }}, Public Key {{ lookup('file', key_dir + '/id_ed25519.pub') }}"
|