mirror of
https://github.com/natelandau/ansible-homelab-config.git
synced 2025-11-18 01:43:40 -05:00
190 lines
5.8 KiB
YAML
190 lines
5.8 KiB
YAML
---
|
|
# TASK DESCRIPTION:
|
|
# Downloads, installs, and configures Tdarr/
|
|
|
|
- name: "Set variables"
|
|
block:
|
|
- name: "Set tdarr local filesystem location (pis)"
|
|
ansible.builtin.set_fact:
|
|
interpolated_tdarr_dir: "{{ rpi1_tdarr_file_location }}"
|
|
changed_when: false
|
|
when:
|
|
- "'pis' in group_names"
|
|
|
|
- name: "Set tdarr local filesystem location (macs)"
|
|
ansible.builtin.set_fact:
|
|
interpolated_tdarr_dir: "{{ mac_tdarr_file_location }}"
|
|
changed_when: false
|
|
when:
|
|
- "'macs' in group_names"
|
|
|
|
- name: "set variable: Set tdarr download Binary (armv7l)"
|
|
ansible.builtin.set_fact:
|
|
tdarr_download_uri: "https://f000.backblazeb2.com/file/tdarrs/versions/{{ tdarr_installer_version }}/linux_arm/Tdarr_Updater.zip"
|
|
when:
|
|
- ansible_os_family == 'Debian'
|
|
- ansible_architecture == 'armv7l'
|
|
|
|
- name: "set variable: Set tdarr download Binary (MacOSX) - Intel"
|
|
ansible.builtin.set_fact:
|
|
tdarr_download_uri: "https://f000.backblazeb2.com/file/tdarrs/versions/{{ tdarr_installer_version }}/darwin_x64/Tdarr_Updater.zip"
|
|
when:
|
|
- mac_intel
|
|
|
|
- name: "set variable: Set tdarr download Binary (MacOSX) - ARM"
|
|
ansible.builtin.set_fact:
|
|
tdarr_download_uri: "https://f000.backblazeb2.com/file/tdarrs/versions/{{ tdarr_installer_version }}/darwin_arm64/Tdarr_Updater.zip"
|
|
when:
|
|
- mac_arm
|
|
|
|
- name: "set fact: do we need a tdarr install?"
|
|
ansible.builtin.set_fact:
|
|
need_tdarr_install: false
|
|
|
|
- name: Assert that we can install Tdarr
|
|
ansible.builtin.assert:
|
|
that:
|
|
- tdarr_download_uri is defined
|
|
- interpolated_tdarr_dir is defined
|
|
fail_msg: "Unable to install Tdarr on this host"
|
|
|
|
- name: "Install ffmpeg and HandbrakeCLI"
|
|
block:
|
|
- name: "ensure ffmpeg and handbrake are installed (Debian)"
|
|
become: true
|
|
ansible.builtin.apt:
|
|
pkg: "{{ item }}"
|
|
state: present
|
|
loop:
|
|
- ffmpeg
|
|
- handbrake
|
|
when: "'pis' in group_names"
|
|
|
|
- name: "ensure ffmpeg and handbrake are installed (MacOS)"
|
|
community.general.homebrew:
|
|
name: "{{ item }}"
|
|
state: present
|
|
update_homebrew: false
|
|
upgrade_all: false
|
|
loop:
|
|
- ffmpeg
|
|
- handbrake
|
|
when: "'macs' in group_names"
|
|
|
|
- name: "ensure tdarr directory exists"
|
|
become: true
|
|
ansible.builtin.file:
|
|
path: "{{ interpolated_tdarr_dir }}"
|
|
mode: 0755
|
|
owner: "{{ ansible_user_uid }}"
|
|
group: "{{ ansible_user_gid }}"
|
|
state: directory
|
|
|
|
- name: "Install tdarr"
|
|
block:
|
|
- name: "set_fact: need Tdarr install?"
|
|
ansible.builtin.stat:
|
|
path: "{{ interpolated_tdarr_dir }}/configs"
|
|
register: tdarr_exists
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: "set fact: do we need a tdarr install?"
|
|
ansible.builtin.set_fact:
|
|
need_tdarr_install: true
|
|
when: not tdarr_exists.stat.exists
|
|
|
|
- name: Download tdarr
|
|
ansible.builtin.unarchive:
|
|
src: "{{ tdarr_download_uri }}"
|
|
dest: "{{ interpolated_tdarr_dir }}"
|
|
remote_src: true
|
|
when: need_tdarr_install
|
|
|
|
- name: Did tdarr download?
|
|
ansible.builtin.stat:
|
|
path: "{{ interpolated_tdarr_dir }}/Tdarr_Updater"
|
|
register: tdarr_installer_exists
|
|
failed_when: not tdarr_installer_exists.stat.exists
|
|
when: need_tdarr_install
|
|
|
|
- name: Ensure correct permissions on Tdarr_Updater
|
|
ansible.builtin.file:
|
|
path: "{{ interpolated_tdarr_dir }}/Tdarr_Updater"
|
|
mode: 0755
|
|
when: need_tdarr_install
|
|
|
|
- name: Install tdarr
|
|
ansible.builtin.command:
|
|
cmd: "{{ interpolated_tdarr_dir }}/Tdarr_Updater"
|
|
register: tdarr_install
|
|
failed_when: tdarr_install.rc > 0
|
|
when: need_tdarr_install
|
|
|
|
- name: Ensure correct permissions on server/node executables
|
|
ansible.builtin.file:
|
|
path: "{{ interpolated_tdarr_dir }}/{{ item }}"
|
|
mode: 0755
|
|
loop:
|
|
- Tdarr_Server/Tdarr_Server
|
|
- Tdarr_Node/Tdarr_Node
|
|
when: need_tdarr_install
|
|
|
|
- name: "configure tdarr"
|
|
block:
|
|
- name: update server configuration file
|
|
ansible.builtin.template:
|
|
src: Tdarr_Server_Config.json.j2
|
|
dest: "{{ interpolated_tdarr_dir }}/configs/Tdarr_Server_Config.json"
|
|
mode: 0644
|
|
when: is_tdarr_server
|
|
|
|
- name: update node configuration file
|
|
ansible.builtin.template:
|
|
src: Tdarr_Node_Config.json.j2
|
|
dest: "{{ interpolated_tdarr_dir }}/configs/Tdarr_Node_Config.json"
|
|
mode: 0644
|
|
when: is_tdarr_node
|
|
|
|
- name: check if consul is installed?
|
|
ansible.builtin.stat:
|
|
path: "{{ interpolated_consul_configuration_dir }}"
|
|
register: consul_installed
|
|
changed_when: false
|
|
failed_when: false
|
|
when:
|
|
- is_tdarr_server
|
|
|
|
- name: move consul service config into place
|
|
become: true
|
|
ansible.builtin.template:
|
|
src: consul_services/tdarr_service.json.j2
|
|
dest: "{{ interpolated_consul_configuration_dir }}/tdarr_service.json"
|
|
mode: 0644
|
|
when:
|
|
- is_tdarr_server
|
|
- consul_installed.stat.exists
|
|
|
|
- name: Reload consul agent
|
|
ansible.builtin.uri:
|
|
url: "http://{{ ansible_host }}:8500/v1/agent/reload"
|
|
method: PUT
|
|
status_code: 200
|
|
ignore_errors: true
|
|
register: consul_agent_reload_http_response
|
|
failed_when: consul_agent_reload_http_response.status != 200
|
|
when:
|
|
- is_tdarr_server
|
|
- consul_installed.stat.exists
|
|
|
|
- name: debug when consul agent reload fails
|
|
ansible.builtin.debug:
|
|
var: consul_agent_reload_http_response.msg
|
|
when:
|
|
- is_tdarr_server
|
|
- consul_installed.stat.exists
|
|
- consul_agent_reload_http_response.status != 200
|
|
|
|
- name: mount shared storage
|
|
ansible.builtin.import_tasks: cluster_storage.yml
|