86 lines
2.4 KiB
YAML
86 lines
2.4 KiB
YAML
---
|
|||
|
|
# 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
|