--- - name: Update AdGuard VPN exclusions hosts: your_nuc gather_facts: no vars: exclusions_url: "https://raw.githubusercontent.com/lib4u/amnezia-tunneling-ru/main/amnezia.json" telegram_token: "8820292312:AAECFO1AEWOJTh30zNuhyjC5C81o_qJHQcM" telegram_chat_id: "407968638" tasks: - name: Download current exclusion list ansible.builtin.uri: url: "{{ exclusions_url }}" return_content: yes register: exclusions_raw - name: Extract domains from JSON (amnezia.json format) ansible.builtin.set_fact: domains: "{{ exclusions_raw.content | from_json | json_query('domains') }}" when: exclusions_raw.content | from_json | type_debug == 'dict' ignore_errors: yes - name: Extract domains from plain text (fallback) ansible.builtin.set_fact: domains: "{{ exclusions_raw.content | split('\n') | reject('match', '^#') | reject('match', '^$') | list }}" when: domains is not defined - name: Count domains ansible.builtin.debug: msg: "Found {{ domains | length }} domains to exclude" - name: Clear existing exclusions ansible.builtin.command: cmd: adguardvpn-cli site-exclusions clear changed_when: true - name: Set exclusion mode to GENERAL ansible.builtin.command: cmd: adguardvpn-cli site-exclusions mode general changed_when: true - name: Add each domain as exclusion ansible.builtin.command: cmd: "adguardvpn-cli site-exclusions add {{ item }}" loop: "{{ domains }}" when: domains | length > 0 loop_control: pause: 0.1 changed_when: true - name: Restart VPN to apply changes ansible.builtin.command: cmd: "adguardvpn-cli disconnect && adguardvpn-cli connect" changed_when: true - name: Send Telegram notification via API ansible.builtin.uri: url: "https://api.telegram.org/bot{{ telegram_token }}/sendMessage" method: POST body_format: json body: chat_id: "{{ telegram_chat_id }}" text: "✅ Список исключений обновлён. Добавлено {{ domains | length }} доменов." disable_web_page_preview: yes delegate_to: localhost when: telegram_token is defined and telegram_chat_id is defined