ansible-infra/ansible_collections/nullified/infrastructure/roles/deluge/tasks/main.yml

160 lines
4.1 KiB
YAML

---
- 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