commit f822a513ae61e933017399a41cedf3b65ff15ae4 Author: mathieu Date: Sun May 24 17:13:32 2026 +0200 feat: initial installation role for sonarr diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a8b42eb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.retry diff --git a/README.md b/README.md new file mode 100644 index 0000000..5cd62f1 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# ansible-role-sonarr + +Installs Sonarr on Debian-based distributions using the official apt repository. + +The package creates a `sonarr` user by default. Set `sonarr_user` and `sonarr_group` +to use a pre-existing user (must be created by a separate role beforehand). + +## Requirements + +- Ansible >= 2.14 +- Debian or Ubuntu + +## Role Variables + +| Variable | Default | Description | +|---|---|---| +| `sonarr_user` | `sonarr` | User to run Sonarr as | +| `sonarr_group` | `sonarr` | Group to run Sonarr as | +| `sonarr_apt_repo_release` | `{{ ansible_distribution_release }}` | Debian release codename | +| `sonarr_service_enabled` | `true` | Enable service at boot | +| `sonarr_service_state` | `started` | Service state after installation | + +## Example Playbook + +```yaml +- hosts: servers + roles: + - role: ansible-role-sonarr + vars: + sonarr_user: sonarr + sonarr_group: sonarr +``` + +## License + +MIT diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..7c0e980 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,6 @@ +--- +sonarr_user: sonarr +sonarr_group: sonarr +sonarr_apt_repo_release: "{{ ansible_distribution_release }}" +sonarr_service_enabled: true +sonarr_service_state: started diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1 @@ +--- diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..b42a157 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,13 @@ +--- +galaxy_info: + author: mathieu + description: Install Sonarr on Debian-based distributions + license: MIT + min_ansible_version: "2.14" + platforms: + - name: Debian + versions: [bullseye, bookworm] + - name: Ubuntu + versions: [focal, jammy, noble] + galaxy_tags: [sonarr, media, arr] +dependencies: [] diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..1b7390f --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,63 @@ +--- +- name: Assert Debian-based distribution + ansible.builtin.assert: + that: + - ansible_os_family == 'Debian' + fail_msg: "ansible-role-sonarr only supports Debian-based distributions" + +- name: Install prerequisites + ansible.builtin.apt: + name: + - gnupg + - ca-certificates + - curl + state: present + update_cache: true + become: true + +- name: Create keyrings directory + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: '0755' + become: true + +- name: Download Sonarr signing key + ansible.builtin.shell: + cmd: > + curl -fsSL + "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2009837CBFFD68F45BC180471F4F90DE2A9B4BF8" + | gpg --dearmor -o /etc/apt/keyrings/sonarr.gpg + creates: /etc/apt/keyrings/sonarr.gpg + become: true + +- name: Set signing key permissions + ansible.builtin.file: + path: /etc/apt/keyrings/sonarr.gpg + mode: '0644' + become: true + +- name: Add Sonarr apt repository + ansible.builtin.copy: + content: "deb [signed-by=/etc/apt/keyrings/sonarr.gpg] https://apt.sonarr.tv/debian {{ sonarr_apt_repo_release }} main\n" + dest: /etc/apt/sources.list.d/sonarr.list + mode: '0644' + become: true + +- name: Install Sonarr + ansible.builtin.apt: + name: sonarr + state: present + update_cache: true + become: true + environment: + DEBIAN_FRONTEND: noninteractive + SONARR_USER: "{{ sonarr_user }}" + SONARR_GROUP: "{{ sonarr_group }}" + +- name: Enable and start Sonarr service + ansible.builtin.systemd: + name: sonarr + enabled: "{{ sonarr_service_enabled }}" + state: "{{ sonarr_service_state }}" + become: true