--- - name: install dependencies become: true ansible.builtin.apt: update_cache: yes force_apt_get: true state: present cache_valid_time: 3600 pkg: - closure-compiler - git - intltool - openssl - pkg-config - python3-dbus - python3-geoip - python3-libtorrent - python3-pip - python3-virtualenv - name: gather facts ansible.builtin.include_tasks: gather_facts.yml - name: create service group become: true ansible.builtin.group: name: '{{ deluge_group }}' system: true state: present - name: create service user become: true ansible.builtin.user: name: '{{ deluge_user }}' group: '{{ deluge_group }}' shell: '/usr/sbin/nologin' home: '{{ deluge_install_dir }}' create_home: true system: true state: present - name: mark repository as safe become: true ansible.builtin.shell: > git config --global --get safe.directory {{ deluge_git_dir }} || git config --global --add safe.directory {{ deluge_git_dir }} - name: clone repository become: true ansible.builtin.git: repo: '{{ deluge_git_repository }}' dest: '{{ deluge_git_dir }}' single_branch: true version: '{{ deluge_git_version }}' - name: setup virtualenv become: true ansible.builtin.pip: requirements: '{{ deluge_git_dir }}/requirements.txt' virtualenv: '{{ deluge_git_dir }}/.venv' virtualenv_site_packages: true - name: build project become: true command: >- .venv/bin/python setup.py bdist_wheel args: chdir: '{{ deluge_git_dir }}' - name: install generated wheel become: true ansible.builtin.shell: >- .venv/bin/pip install dist/*.whl --no-index --find-links=. args: chdir: '{{ deluge_git_dir }}' - name: set ownership become: true ansible.builtin.file: path: '{{ deluge_git_dir }}' owner: '{{ deluge_user }}' group: '{{ deluge_group }}' mode: 'u=rwX,g=rX,o=' recurse: yes follow: false - name: install man page become: true ansible.builtin.copy: src: '{{ deluge_git_dir }}/docs/man/deluged.1' remote_src: true dest: '/usr/local/share/man/man1/' owner: root group: root mode: 'u=rwX,g=rX,o=' - name: install deluged unit files become: true ansible.builtin.template: src: ../templates/systemd/deluged.service.j2 dest: '{{ systemd_unit_directory }}/deluged.service' owner: root group: root mode: 'u=rwX,g=rX,o=' notify: - 'deluge : restart deluged service' - name: install systemd unit files become: true ansible.builtin.template: src: ../templates/systemd/deluge-web.service.j2 dest: '{{ systemd_unit_directory }}/deluge-web.service' owner: root group: root mode: 'u=rwX,g=rX,o=' notify: - 'deluge : restart deluge-web service' - name: create directories become: true ansible.builtin.file: path: '{{ item }}' owner: '{{ deluge_user }}' group: '{{ deluge_group }}' mode: 'u=rwX,g=rX,o=' state: directory loop: - '{{ deluge_download_dir }}' - '{{ deluge_install_dir }}/.config/deluge' - '{{ deluge_completed_dir }}' - '{{ deluge_plugins_dir }}' - '{{ deluge_torrentfiles_dir }}' - name: 'install firewall ruleset' become: true ansible.builtin.template: src: ../templates/nftables.d/deluge.nft.j2 dest: '/etc/nftables.d/deluge.nft' owner: root group: root mode: 'u=rw,g=r,o=' notify: - 'deluge : restart firewall' - name: stop services become: true ansible.builtin.systemd: name: '{{ item }}.service' enabled: true state: stopped daemon_reload: true loop: - deluged - deluge-web - name: create basic configuration become: true ansible.builtin.template: src: '../templates/{{ item }}.j2' dest: '{{ deluge_install_dir }}/.config/deluge/{{ item }}' owner: '{{ deluge_user }}' group: '{{ deluge_group }}' mode: 'u=rw,g=r,o=' loop: - core.conf - web.conf - name: start services become: true ansible.builtin.systemd: name: '{{ item }}.service' enabled: true state: started daemon_reload: true loop: - deluged - deluge-web