-
Notifications
You must be signed in to change notification settings - Fork 4
/
prowlarr.yml
132 lines (118 loc) · 4.23 KB
/
prowlarr.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
---
- hosts: homelab
vars:
application: prowlarr
docker_network: "{{ networks.pub }}"
handlers:
- name: Restart
community.docker.docker_container:
name: "{{ application }}"
restart: true
comparisons:
'*': ignore
tasks:
- name: Create config folder
ansible.builtin.file:
path: "{{ config_directory }}"
state: directory
owner: "{{ common_user }}"
group: "{{ common_root_group }}"
mode: "0771"
- name: Copy SQL database init script to create log database
ansible.builtin.copy:
content: |
#!/usr/bin/env bash
set -euo pipefail
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE DATABASE "{{ application }}-log";
GRANT ALL PRIVILEGES ON DATABASE "{{ application }}-log" TO "$POSTGRES_USER";
EOSQL
dest: "{{ config_directory }}/init-log-db.sh"
mode: "0755"
- name: Create postgres container
ansible.builtin.import_role:
name: postgres
vars:
postgres_version: 16
postgres_database: "{{ application }}-main"
postgres_directory_extra:
- "{{ config_directory }}/init-log-db.sh:/docker-entrypoint-initdb.d/init-log-db.sh:ro"
postgres_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
63653466323833353964373365306233393238346261656430653264333561633134303566333831
3333386535343464376332666235653464643738303035310a663339623865666239393139646630
36373236383430376539623733656331333731343332616564346634626161306661303430313131
6537646239323834390a666433393565616338303462373963626562656537343465383836356463
63633438386233653233383466633231643432373437353966633462326135396633323438326539
3438313334343439646436366438616665383132326331353730
- name: Create container
ansible.builtin.include_role:
name: docker_container
vars:
image: lscr.io/linuxserver/prowlarr:1.23.1
volumes:
- "{{ config_directory }}/config:/config"
env:
PUID: "{{ common_user_id | string }}"
PGID: "{{ common_root_group | string }}"
TZ: "{{ common_timezone }}"
traefik:
-
port: 9696
auth: page
rule: Host(`{{ application }}.{{ common_tld }}`)
-
name: "{{ application }}-bypass-auth"
port: 9696
rule: Host(`{{ application }}.{{ common_tld }}`) && PathPrefix(`/api/`) && Header(`{{ traefik_bypass_auth_header.key }}`, `{{ traefik_bypass_auth_header.value }}`)
homepage:
group: Favourites
weight: 350
description: "Index manager"
widget:
key: "{{ prowlarr_api_key }}"
healthcheck:
test: "curl -f http://localhost:9696/ || exit 1"
start_period: 5s
interval: 5s
retries: 3
blackbox:
path: /ping
labels:
autoheal: "true"
- name: Wait for config
ansible.builtin.wait_for:
path: "{{ config_directory }}/config/config.xml"
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
cache_valid_time: 600
changed_when: false
- name: Install lxml
ansible.builtin.apt:
name: python3-lxml
state: present
register: result
until: result is success
retries: 5
delay: 5
- name: Configure
community.general.xml:
path: "{{ config_directory }}/config/config.xml"
xpath: "/Config/{{ item.key }}"
value: "{{ item.value | string }}"
pretty_print: true
loop: "{{ _prowlarr_config | dict2items }}"
notify: Restart
vars:
_prowlarr_config:
ApiKey: "{{ prowlarr_api_key }}"
LaunchBrowser: "False"
AnalyticsEnabled: "False"
PostgresHost: "{{ _postgres_hostname }}"
PostgresPort: "{{ _postgres_port }}"
PostgresMainDb: "{{ _postgres_database }}"
PostgresLogDb: "{{ application }}-log"
PostgresUser: "{{ _postgres_username }}"
PostgresPassword: "{{ _postgres_password }}"
AuthenticationMethod: "External"