Compare commits

..

6 Commits

Author SHA1 Message Date
Sergey Antropoff 75f1885772 fix: пропускать sync install_server.sh при сетевой ошибке
Если get.hy2.sh недоступен (таймаут без VPN), используется локальная
копия в roles/hysteria2/files/; падение только если её нет.
2026-07-01 14:06:46 +03:00
Sergey Antropoff 2deec1ab0b docs: LIMIT при добавлении сервера и force_export в README
Описано, что make install LIMIT не трогает старые VPS и как принудительно
перевыпустить URL/QR через hysteria2_force_export.
2026-07-01 13:37:48 +03:00
Sergey Antropoff f6a81929b5 fix: пересборка output/index.html при uninstall с LIMIT
Второй play перенесён на hysteria2_servers с run_once на localhost,
чтобы LIMIT не пропускал пересборку. Пустой index.html удаляется.
2026-07-01 13:31:40 +03:00
Sergey Antropoff dd10a557d6 Полная очистка при uninstall: VPS и output/<server>/
Скрипт --remove снимает только бинарник и systemd; Ansible дочищает конфиг,
пользователя, ufw, пакеты и всегда удаляет локальную папку экспорта.
2026-07-01 13:28:00 +03:00
Sergey Antropoff 0d67822eb8 fix: run only uninstall tasks, not full role on make uninstall
Tagging the whole role with uninstall caused install/configure/update/export to run first. Use include_role tasks_from uninstall.yml; add safe defaults for uninstall variables.
2026-07-01 13:19:47 +03:00
Sergey Antropoff 8e7e5bd7fb docs: update README for install script, update, uninstall and users
Document incremental export, full uninstall cleanup, vault wiring, Makefile commands and role structure.
2026-07-01 13:15:24 +03:00
2 changed files with 77 additions and 11 deletions
+21
View File
@@ -81,10 +81,12 @@ make install # → output/index.html откроется в браузере
```bash
make install LIMIT=vps-de
make install LIMIT=vps-nl # только новый сервер — старые не трогаются
make update LIMIT=vps-nl
make export
make uninstall LIMIT=vps-de
make update EXTRA_VARS='hysteria2_force_export=true' # перевыпустить URL/QR для всех
make install EXTRA_VARS='hysteria2_force_export=true' # то же при install
make install EXTRA_VARS='hysteria2_open_browser=false'
make update EXTRA_VARS='hysteria2_wait_for_acme=false'
```
@@ -223,6 +225,25 @@ hysteria2_user_passwords:
Принудительно перевыпустить URL/QR для всех: `hysteria2_force_export: true``group_vars/all.yml` или `EXTRA_VARS`).
```bash
make install EXTRA_VARS='hysteria2_force_export=true'
make update LIMIT=vps-de EXTRA_VARS='hysteria2_force_export=true'
```
### Добавить второй VPS
После `make install` на первом сервере можно добавить ещё один хост в `inventory/hosts.yml`.
**Без `LIMIT`** `make install` пройдёт по **всем** серверам из inventory. На уже установленном пароли и файлы URL/QR **не перегенерируются** (берутся из `output/<server>/server-info.yml`), если вы не меняли его `hysteria2_users`, домен или порт.
Чтобы **не трогать** уже работающий VPS и экспорт:
```bash
make install LIMIT=новый-сервер
```
`LIMIT` — имя нового хоста из inventory (например `vps-nl`).
### Добавить / удалить пользователя
1. Отредактируйте `hysteria2_users` в `inventory/hosts.yml` (добавьте имя или уберите).
+53 -8
View File
@@ -14,10 +14,19 @@
dest: "{{ hysteria2_install_script_staging_dir }}/{{ hysteria2_install_script_name }}.remote"
mode: "0644"
force: true
timeout: 30
delegate_to: localhost
become: false
run_once: true
register: _hysteria2_remote_script
failed_when: false
- name: Record install script fetch result
ansible.builtin.set_fact:
_hysteria2_script_fetch_ok: "{{ not (_hysteria2_remote_script.failed | default(false)) }}"
delegate_to: localhost
become: false
run_once: true
- name: Stat local install script in role files
ansible.builtin.stat:
@@ -36,6 +45,7 @@
become: false
run_once: true
register: _hysteria2_remote_script_stat
when: _hysteria2_script_fetch_ok | bool
- name: Update bundled install script when official version is newer
ansible.builtin.copy:
@@ -45,20 +55,55 @@
delegate_to: localhost
become: false
run_once: true
when: >-
when:
- _hysteria2_script_fetch_ok | bool
- >-
not _hysteria2_local_script.stat.exists
or _hysteria2_local_script.stat.checksum
!= _hysteria2_remote_script_stat.stat.checksum
register: _hysteria2_script_updated
- name: Report install script sync result
ansible.builtin.debug:
- name: Fail when bundled install script is missing and official fetch failed
ansible.builtin.fail:
msg: >-
{{
'Официальный install_server.sh обновлён в roles/hysteria2/files/'
if (_hysteria2_script_updated.changed | default(false))
else 'Локальный install_server.sh актуален (совпадает с ' ~ hysteria2_install_script_url ~ ')'
}}
Не удалось скачать {{ hysteria2_install_script_url }}
({{ _hysteria2_remote_script.msg | default('сеть недоступна') }})
и локальный roles/hysteria2/files/{{ hysteria2_install_script_name }} отсутствует.
delegate_to: localhost
become: false
run_once: true
when:
- not _hysteria2_script_fetch_ok | bool
- not _hysteria2_local_script.stat.exists
- name: Report install script sync skipped due to network error
ansible.builtin.debug:
msg: >-
Пропуск синхронизации с {{ hysteria2_install_script_url }}:
{{ _hysteria2_remote_script.msg | default('сеть недоступна') }}.
Используется локальный roles/hysteria2/files/{{ hysteria2_install_script_name }}.
delegate_to: localhost
become: false
run_once: true
when: not _hysteria2_script_fetch_ok | bool
- name: Report install script updated from official server
ansible.builtin.debug:
msg: Официальный install_server.sh обновлён в roles/hysteria2/files/
delegate_to: localhost
become: false
run_once: true
when:
- _hysteria2_script_fetch_ok | bool
- _hysteria2_script_updated.changed | default(false)
- name: Report install script already up to date
ansible.builtin.debug:
msg: >-
Локальный install_server.sh актуален (совпадает с {{ hysteria2_install_script_url }}).
delegate_to: localhost
become: false
run_once: true
when:
- _hysteria2_script_fetch_ok | bool
- not (_hysteria2_script_updated.changed | default(false))