feat(deluge): added role to install deluge and deluge web
This commit is contained in:
parent
bef258cfec
commit
1c625d2d84
19 changed files with 553 additions and 1 deletions
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
- name: find systemd unit directory
|
||||
become: true
|
||||
ansible.builtin.command: pkg-config systemd --variable=systemdsystemunitdir
|
||||
changed_when: false
|
||||
register: systemd_unit_directory_cmd
|
||||
- name: find systemd version
|
||||
become: true
|
||||
ansible.builtin.shell: >
|
||||
systemctl --version | awk '{if($1=="systemd" && $2~"^[0-9]+$"){print $2}}'
|
||||
changed_when: false
|
||||
register: systemd_version_cmd
|
||||
- name: set facts
|
||||
ansible.builtin.set_fact:
|
||||
systemd_unit_directory: "{{ systemd_unit_directory_cmd.stdout }}"
|
||||
systemd_version: "{{ systemd_version_cmd.stdout | int }}"
|
||||
deluge_web_password_salt: "{{ deluge_web_password_salt | default(lookup('ansible.builtin.password', '/dev/null', chars=['ascii_letters', 'digits'], length=40), true) }}"
|
||||
- name: compute sha1 digest
|
||||
ansible.builtin.shell: >
|
||||
echo -n "${DELUGED_PASSWD_SALT}${DELUGED_PASSWD}" | openssl dgst -sha1 -r | cut -d ' ' -f 1
|
||||
register: deluge_pwd_sha1
|
||||
changed_when: false
|
||||
environment:
|
||||
DELUGED_PASSWD: '{{ deluge_web_password }}'
|
||||
DELUGED_PASSWD_SALT: '{{ deluge_web_password_salt }}'
|
||||
- name: set facts
|
||||
ansible.builtin.set_fact:
|
||||
deluge_web_password_hash: "{{ deluge_pwd_sha1.stdout }}"
|
|
@ -0,0 +1,160 @@
|
|||
---
|
||||
- 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
|
Loading…
Add table
Add a link
Reference in a new issue