- name: Record (initial) disk space used shell: df -B1 --output=used / | tail -1 register: df1 - name: "Install BitTorrent packages: transmission-daemon, transmission-cli" package: name: - transmission-daemon - transmission-cli state: present - block: - name: "TRY TO COMPILE & INSTALL very latest Transmission, installing ~5 binaries in /usr/local/bin to take precedence over above ~6 binaries in /usr/bin (attempt surgery on systemd unit file from apt install above!)" meta: noop # https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix # https://github.com/transmission/transmission/issues/5362 tips thanks to @tearfur - name: apt install build-essential cmake libcurl4-openssl-dev libssl-dev libsystemd-dev # git python3 package: name: - build-essential - cmake - libcurl4-openssl-dev - libssl-dev - libsystemd-dev state: present - name: Git clone https://github.com/transmission/transmission to /opt/iiab/transmission git: repo: https://github.com/transmission/transmission dest: /opt/iiab/transmission #version: 4.0.x # Otherwise default branch 'main' depth: 1 force: yes # https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#building-transmission-from-git-first-time - name: Compile & Install (CAN TAKE 10+ MINUTES, OR MUCH MORE ON A RASPBERRY PI!) shell: | cd /opt/iiab/transmission git submodule update --init --recursive mkdir build cd build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. make make install - name: Attempt surgery on /lib/systemd/system/transmission-daemon.service (1) changing --log-error to --log-level=error (2) changing /usr/bin/transmission* to /usr/local/bin/transmission* shell: | sed -i 's/--log-error/--log-level=error/' /lib/systemd/system/transmission-daemon.service # --log-error deprecated since ~2020 sed -i 's#/usr/bin/transmission#/usr/local/bin/transmission#' /lib/systemd/system/transmission-daemon.service # daemon_reload handled by enable-or-disable.yml when: transmission_compile_latest - name: Create download dir {{ transmission_download_dir }}, owned by {{ transmission_user }}:{{ transmission_group }} file: state: directory path: "{{ transmission_download_dir }}" # /library/transmission owner: "{{ transmission_user }}" # debian-transmission group: "{{ transmission_group }}" # debian-transmission - name: Stop 'transmission-daemon' systemd service, before modifying its settings systemd: name: transmission-daemon state: stopped ignore_errors: yes # 'transmission-daemon -d' (--dump-settings) CAN GENERATE A NEW settings.json # ...then customize ~8 var lines to create a new templates/settings.json.j2 - name: Back up prior /etc/transmission-daemon/settings.json (file originally from apt, or new symlink contents) to /etc/transmission-daemon/settings.json.old* copy: src: /etc/transmission-daemon/settings.json dest: /etc/transmission-daemon/settings.json.old mode: preserve owner: "{{ transmission_user }}" # debian-transmission group: "{{ transmission_group }}" # debian-transmission backup: yes ignore_errors: yes - name: "Back up IIAB's templated version to /etc/transmission-daemon/settings.json.iiab" template: src: settings.json.j2 dest: /etc/transmission-daemon/settings.json.iiab owner: "{{ transmission_user }}" # debian-transmission group: "{{ transmission_group }}" # debian-transmission mode: '0600' - name: Install /var/lib/transmission-daemon/.config/transmission-daemon/settings.json from template template: src: settings.json.j2 dest: /var/lib/transmission-daemon/.config/transmission-daemon/settings.json owner: "{{ transmission_user }}" # debian-transmission group: "{{ transmission_group }}" # debian-transmission mode: '0600' - name: "Reverse Transmission's fragile OOTB symlink -- instead we establish /etc/transmission-daemon/settings.json -> /var/lib/transmission-daemon/.config/transmission-daemon/settings.json -- REASON: /etc/transmission-daemon/settings.json was intermittently being IGNORED, as Transmission sometimes breaks its own symlink from /var/lib/transmission-daemon/.config/transmission-daemon/settings.json (by turning it into a file instead)" file: path: /etc/transmission-daemon/settings.json src: /var/lib/transmission-daemon/.config/transmission-daemon/settings.json # Symlink /var/lib/transmission-daemon/home/settings.json also points to this state: link force: yes # RECORD Transmission AS INSTALLED - name: Record (final) disk space used shell: df -B1 --output=used / | tail -1 register: df2 - name: Add 'transmission_disk_usage = {{ df2.stdout|int - df1.stdout|int }}' to {{ iiab_ini_file }} ini_file: path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini section: transmission option: transmission_disk_usage value: "{{ df2.stdout|int - df1.stdout|int }}" - name: "Set 'transmission_installed: True'" set_fact: transmission_installed: True - name: "Add 'transmission_installed: True' to {{ iiab_state_file }}" lineinfile: path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml regexp: '^transmission_installed' line: 'transmission_installed: True'