Files
hysteria2/roles/hysteria2/tasks/uninstall.yml
T
inecs f844bee79b feat: complete uninstall cleanup on server and local output
Remove binary, config, masq, system user, ufw rules, and apt packages from VPS; delete output/<server>/ by default and rebuild global index.html via localhost play.
2026-07-01 12:55:52 +03:00

108 lines
3.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
- name: Stop and disable hysteria-server
ansible.builtin.systemd:
name: "{{ hysteria2_service_name }}"
enabled: false
state: stopped
failed_when: false
- name: Sync official Hysteria2 install script on control node
ansible.builtin.import_tasks: sync_install_script.yml
- name: Copy Hysteria2 install script to server
ansible.builtin.copy:
src: "{{ hysteria2_install_script_name }}"
dest: "{{ hysteria2_install_script_remote_path }}"
mode: "0755"
- name: Remove Hysteria2 binary and systemd units via official script
ansible.builtin.command:
cmd: "{{ hysteria2_install_script_remote_path }} --remove"
register: _hysteria2_remove
changed_when: _hysteria2_remove.rc == 0
failed_when: false
- name: Remove Hysteria2 configuration and ACME data
ansible.builtin.file:
path: "{{ hysteria2_config_path | dirname }}"
state: absent
when: hysteria2_uninstall_remove_config | bool
- name: Remove masquerade web directory
ansible.builtin.file:
path: "{{ hysteria2_masq_dir }}"
state: absent
when: hysteria2_uninstall_remove_masq | bool
- name: Remove Hysteria system user and home directory
ansible.builtin.user:
name: "{{ hysteria2_system_user }}"
state: absent
remove: true
when: hysteria2_uninstall_remove_system_user | bool
failed_when: false
- name: Check if ufw is available and active
ansible.builtin.command: ufw status
register: _hysteria2_ufw_status
changed_when: false
failed_when: false
when: hysteria2_uninstall_remove_firewall_rules | bool
- name: Remove firewall rules added during install
ansible.builtin.command: "ufw delete allow {{ item }}"
loop: "{{ hysteria2_uninstall_ufw_rules }}"
register: _hysteria2_ufw_delete
changed_when: >-
_hysteria2_ufw_delete.rc == 0
and 'Could not delete' not in (_hysteria2_ufw_delete.stdout | default(''))
and 'Could not find' not in (_hysteria2_ufw_delete.stderr | default(''))
failed_when: false
when:
- hysteria2_uninstall_remove_firewall_rules | bool
- "'active' in (_hysteria2_ufw_status.stdout | default(''))"
- name: Remove packages installed for Hysteria2
ansible.builtin.apt:
name: "{{ _hysteria2_apt_packages }}"
state: absent
purge: true
autoremove: true
vars:
_hysteria2_apt_packages: >-
{{
['curl', 'micro']
+ (['qrencode'] if hysteria2_generate_qr_png | bool else [])
}}
when: hysteria2_uninstall_remove_packages | bool
- name: Remove copied install script from server
ansible.builtin.file:
path: "{{ hysteria2_install_script_remote_path }}"
state: absent
- name: Reload systemd after uninstall
ansible.builtin.systemd:
daemon_reload: true
- name: Remove local exported client files
ansible.builtin.file:
path: "{{ hysteria2_output_dir }}/{{ hysteria2_output_name }}"
state: absent
delegate_to: localhost
become: false
when: hysteria2_uninstall_remove_local_output | bool
- name: Show uninstall result
ansible.builtin.debug:
msg: >-
Hysteria2 полностью удалён с {{ inventory_hostname }}.
{% if hysteria2_uninstall_remove_local_output | bool %}
Локальные URL/QR в {{ hysteria2_output_dir }}/{{ hysteria2_output_name }}/ удалены.
{% if hysteria2_uninstall_rebuild_global_index | bool %}
Глобальный {{ hysteria2_output_dir }}/index.html пересобран.
{% endif %}
{% else %}
Локальные URL/QR в {{ hysteria2_output_dir }}/{{ hysteria2_output_name }}/ сохранены.
{% endif %}