Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8ba1c6c45f | |||
| 3034be388b | |||
| 83b47dbc30 | |||
| 4b5a1ef51f | |||
| bdc316efac | |||
| 01198b4f77 |
@@ -80,10 +80,12 @@ make install # → output/index.html откроется в браузере
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
make install LIMIT=vps-de
|
make install LIMIT=vps-de
|
||||||
|
make install LIMIT=vps-nl # только новый сервер — старые не трогаются
|
||||||
make update LIMIT=vps-nl
|
make update LIMIT=vps-nl
|
||||||
make export
|
make export
|
||||||
make uninstall LIMIT=vps-de
|
make uninstall LIMIT=vps-de
|
||||||
make update EXTRA_VARS='hysteria2_force_export=true' # перевыпустить URL/QR для всех
|
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 install EXTRA_VARS='hysteria2_open_browser=false'
|
||||||
make update EXTRA_VARS='hysteria2_wait_for_acme=false'
|
make update EXTRA_VARS='hysteria2_wait_for_acme=false'
|
||||||
```
|
```
|
||||||
@@ -240,6 +242,25 @@ hysteria2_obfs_password: "{{ vault_hysteria2_obfs_passwords[inventory_hostname]
|
|||||||
|
|
||||||
Принудительно перевыпустить URL/QR для всех VPN-пользователей: `hysteria2_force_export: true`.
|
Принудительно перевыпустить URL/QR для всех VPN-пользователей: `hysteria2_force_export: true`.
|
||||||
|
|
||||||
|
```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`.
|
1. Отредактируйте `hysteria2_users` в `inventory/hosts.yml`.
|
||||||
|
|||||||
@@ -14,10 +14,19 @@
|
|||||||
dest: "{{ hysteria2_install_script_staging_dir }}/{{ hysteria2_install_script_name }}.remote"
|
dest: "{{ hysteria2_install_script_staging_dir }}/{{ hysteria2_install_script_name }}.remote"
|
||||||
mode: "0644"
|
mode: "0644"
|
||||||
force: true
|
force: true
|
||||||
|
timeout: 30
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
become: false
|
become: false
|
||||||
run_once: true
|
run_once: true
|
||||||
register: _hysteria2_remote_script
|
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
|
- name: Stat local install script in role files
|
||||||
ansible.builtin.stat:
|
ansible.builtin.stat:
|
||||||
@@ -36,6 +45,7 @@
|
|||||||
become: false
|
become: false
|
||||||
run_once: true
|
run_once: true
|
||||||
register: _hysteria2_remote_script_stat
|
register: _hysteria2_remote_script_stat
|
||||||
|
when: _hysteria2_script_fetch_ok | bool
|
||||||
|
|
||||||
- name: Update bundled install script when official version is newer
|
- name: Update bundled install script when official version is newer
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
@@ -45,20 +55,55 @@
|
|||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
become: false
|
become: false
|
||||||
run_once: true
|
run_once: true
|
||||||
when: >-
|
when:
|
||||||
|
- _hysteria2_script_fetch_ok | bool
|
||||||
|
- >-
|
||||||
not _hysteria2_local_script.stat.exists
|
not _hysteria2_local_script.stat.exists
|
||||||
or _hysteria2_local_script.stat.checksum
|
or _hysteria2_local_script.stat.checksum
|
||||||
!= _hysteria2_remote_script_stat.stat.checksum
|
!= _hysteria2_remote_script_stat.stat.checksum
|
||||||
register: _hysteria2_script_updated
|
register: _hysteria2_script_updated
|
||||||
|
|
||||||
- name: Report install script sync result
|
- name: Fail when bundled install script is missing and official fetch failed
|
||||||
ansible.builtin.debug:
|
ansible.builtin.fail:
|
||||||
msg: >-
|
msg: >-
|
||||||
{{
|
Не удалось скачать {{ hysteria2_install_script_url }}
|
||||||
'Официальный install_server.sh обновлён в roles/hysteria2/files/'
|
({{ _hysteria2_remote_script.msg | default('сеть недоступна') }})
|
||||||
if (_hysteria2_script_updated.changed | default(false))
|
и локальный roles/hysteria2/files/{{ hysteria2_install_script_name }} отсутствует.
|
||||||
else 'Локальный install_server.sh актуален (совпадает с ' ~ hysteria2_install_script_url ~ ')'
|
|
||||||
}}
|
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
become: false
|
become: false
|
||||||
run_once: true
|
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))
|
||||||
|
|||||||
Reference in New Issue
Block a user