--- - name: Install prerequisites ansible.builtin.package: name: - curl - sqlite3 state: present become: true - name: Set architecture fact ansible.builtin.set_fact: _radarr_arch: "{{ {'x86_64': 'x64', 'aarch64': 'arm64', 'armv7l': 'arm'}.get(ansible_architecture, 'x64') }}" - name: Get Radarr release info from GitHub ansible.builtin.uri: url: >- {{ 'https://api.github.com/repos/Radarr/Radarr/releases/latest' if radarr_version == '' else 'https://api.github.com/repos/Radarr/Radarr/releases/tags/v' + radarr_version }} headers: Accept: "application/vnd.github.v3+json" return_content: true register: _radarr_release - name: Set version and download URL facts ansible.builtin.set_fact: _radarr_version_tag: "{{ _radarr_release.json.tag_name }}" _radarr_download_url: >- {{ _radarr_release.json.assets | selectattr('name', 'search', 'linux-core-' + _radarr_arch) | map(attribute='browser_download_url') | first }} - name: Read installed version ansible.builtin.slurp: src: "{{ radarr_install_dir }}/.version" register: _radarr_installed_raw ignore_errors: true become: true - name: Set installed version fact ansible.builtin.set_fact: _radarr_installed_version: >- {{ (_radarr_installed_raw.content | b64decode | trim) if _radarr_installed_raw is not failed else '' }} - name: Install or upgrade Radarr when: _radarr_installed_version != _radarr_version_tag block: - name: Download Radarr archive ansible.builtin.get_url: url: "{{ _radarr_download_url }}" dest: /tmp/radarr.tar.gz mode: '0644' - name: Create Radarr installation directory ansible.builtin.file: path: "{{ radarr_install_dir }}" state: directory owner: "{{ radarr_user }}" group: "{{ radarr_group }}" mode: '0755' become: true - name: Extract Radarr archive ansible.builtin.unarchive: src: /tmp/radarr.tar.gz dest: "{{ radarr_install_dir }}" remote_src: true extra_opts: [--strip-components=1] owner: "{{ radarr_user }}" group: "{{ radarr_group }}" become: true - name: Write installed version file ansible.builtin.copy: content: "{{ _radarr_version_tag }}" dest: "{{ radarr_install_dir }}/.version" owner: "{{ radarr_user }}" group: "{{ radarr_group }}" mode: '0644' become: true - name: Remove downloaded archive ansible.builtin.file: path: /tmp/radarr.tar.gz state: absent - name: Create Radarr data directory ansible.builtin.file: path: "{{ radarr_data_dir }}" state: directory owner: "{{ radarr_user }}" group: "{{ radarr_group }}" mode: '0750' become: true - name: Create Radarr systemd service ansible.builtin.copy: content: | [Unit] Description=Radarr After=syslog.target network.target [Service] SyslogIdentifier=radarr ExecStart={{ radarr_install_dir }}/Radarr -nobrowser -data={{ radarr_data_dir }} TimeoutStopSec=20 KillMode=process Restart=on-failure User={{ radarr_user }} Group={{ radarr_group }} UMask=0002 [Install] WantedBy=multi-user.target dest: /etc/systemd/system/radarr.service mode: '0644' become: true - name: Enable and start Radarr service ansible.builtin.systemd: name: radarr enabled: "{{ radarr_service_enabled }}" state: "{{ radarr_service_state }}" daemon_reload: true become: true