fix: пропускать sync install_server.sh при сетевой ошибке
Если get.hy2.sh недоступен (таймаут без VPN), используется локальная копия в roles/hysteria2/files/; падение только если её нет.
This commit is contained in:
@@ -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:
|
||||||
not _hysteria2_local_script.stat.exists
|
- _hysteria2_script_fetch_ok | bool
|
||||||
or _hysteria2_local_script.stat.checksum
|
- >-
|
||||||
!= _hysteria2_remote_script_stat.stat.checksum
|
not _hysteria2_local_script.stat.exists
|
||||||
|
or _hysteria2_local_script.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