--- - name: install required system packages apt: name: - python3-venv - git state: present update_cache: yes - name: ensure base directories exist file: path: "{{ item }}" state: directory owner: root group: root mode: '0755' loop: - /opt/xray-lists - /var/lib/xray-lists - name: clone xray-lists repository git: repo: 'https://gitea.oyacoi.ru/pyrschtjag/xray-lists' dest: /opt/xray-lists-src version: main force: yes - name: check if xray-lists is installed command: /opt/xray-lists/venv/bin/pip show xray-lists register: pip_check changed_when: false failed_when: false - name: install xray-lists package into venv command: /opt/xray-lists/venv/bin/pip install -e /opt/xray-lists-src[socks] when: pip_check.rc != 0 - name: deploy update helper script copy: dest: /var/lib/xray-lists/update.sh owner: root group: root mode: '0755' content: | #!/bin/sh set -e out=$(/opt/xray-lists/venv/bin/xray-lists) echo "$out" dns_changed=0 elements_changed=0 if echo "$out" | grep -A 10 "changed:" | grep -q "nftsets.conf"; then dns_changed=1; fi if echo "$out" | grep -A 10 "changed:" | grep -q "\.elements\.nft"; then elements_changed=1; fi if [ "$dns_changed" -eq 1 ] && [ "$elements_changed" -eq 1 ]; then exit 12; elif [ "$dns_changed" -eq 1 ]; then exit 10; elif [ "$elements_changed" -eq 1 ]; then exit 11; fi exit 0 - name: deploy systemd service unit copy: dest: /etc/systemd/system/xray-lists.service owner: root group: root mode: '0644' content: | [Unit] Description=Update Xray lists [Service] Type=oneshot ExecStart=/bin/sh -c '\ /var/lib/xray-lists/update.sh; \ rc=$$?; \ case "$$rc" in \ 10) systemctl restart dnsmasq ;; \ 11) nft -f /etc/nftables.conf ;; \ 12) nft -f /etc/nftables.conf && systemctl restart dnsmasq ;; \ esac' - name: deploy systemd timer unit copy: dest: /etc/systemd/system/xray-lists.timer owner: root group: root mode: '0644' content: | [Unit] Description=Run xray-lists update daily and on boot [Timer] OnBootSec=5min OnUnitActiveSec=12h Persistent=true [Install] WantedBy=timers.target