--- # Deploy/reconcile the self-hosted RustDesk server (hbbs + hbbr). # Idempotent: deploys the declared compose file; only recreates the stack with # explicit confirmation. - name: Validate relay address is set and not the known-bad value ansible.builtin.assert: that: - rustdesk_relay | length > 0 - "'hk2.wsvc.info' not in rustdesk_relay" fail_msg: >- rustdesk_relay must be a resolvable relay address. The known-bad 'hk2.wsvc.info' has no DNS record and must not be used. - name: Ensure compose project directory exists ansible.builtin.file: path: "{{ rustdesk_compose_dir }}" state: directory owner: windy group: root mode: "0755" - name: Deploy compose file ansible.builtin.template: src: compose.yml.j2 dest: "{{ rustdesk_compose_dir }}/compose.yml" owner: windy group: windy mode: "0644" register: rustdesk_compose_deployed - name: Report no change needed ansible.builtin.debug: msg: "compose.yml already matches declared state; no change needed." when: not rustdesk_compose_deployed.changed - name: Refuse to recreate without explicit confirmation ansible.builtin.fail: msg: >- compose.yml differs from declared state but rustdesk_confirm is not true. Supply rustdesk_confirm=true to deploy the file and recreate the stack. when: - rustdesk_compose_deployed.changed - not (rustdesk_confirm | bool) - not ansible_check_mode - name: Apply compose stack ansible.builtin.command: argv: - docker - compose - --project-directory - "{{ rustdesk_compose_dir }}" - up - -d when: - rustdesk_compose_deployed.changed - rustdesk_confirm | bool changed_when: true register: rustdesk_apply - name: Verify hbbs relay command ansible.builtin.command: argv: - docker - inspect - hbbs - --format - '{{ "{{" }}json .Config.Cmd{{ "}}" }}' register: rustdesk_hbbs_cmd changed_when: false when: - rustdesk_compose_deployed.changed - rustdesk_confirm | bool - not ansible_check_mode - name: Assert hbbs advertises the declared relay ansible.builtin.assert: that: - "'{{ rustdesk_relay }}' in rustdesk_hbbs_cmd.stdout" fail_msg: "hbbs is not advertising the declared relay {{ rustdesk_relay }}." when: - rustdesk_compose_deployed.changed - rustdesk_confirm | bool - not ansible_check_mode