mirror of
https://github.com/RWejlgaard/pez-infra.git
synced 2026-05-06 04:14:43 +00:00
Add the full media automation stack (sonarr, radarr, prowlarr, lidarr, readarr, whisparr), media servers (jellyfin, plex), and supporting services (transmission, samba, ollama, promtail, cloudflared, vsftpd) to the repo as a media_stack Ansible role. Includes: - Custom systemd unit files for non-package-managed services - Config files for promtail, samba, transmission, vsftpd - Cron jobs for movie-rename-fix, sonarr/radarr midnight restarts - Updated deploy.yml to wire the role into london-b's stage - Updated london-b docs with full service inventory Backup script (backup.sh) already covered by the existing backup role. Node/systemd exporters already covered by existing monitoring roles. Closes PESO-92
128 lines
3.1 KiB
YAML
128 lines
3.1 KiB
YAML
---
|
|
# media_stack role — deploys the full media stack on london-b
|
|
# Manages: *arr suite, jellyfin, plex, transmission, samba,
|
|
# ollama, promtail, cloudflared, vsftpd, and cron jobs.
|
|
|
|
# ── Systemd service units (custom, not package-managed) ──
|
|
|
|
- name: Deploy custom systemd unit files
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/services/{{ item }}/{{ item }}.service"
|
|
dest: "/etc/systemd/system/{{ item }}.service"
|
|
mode: '0644'
|
|
loop:
|
|
- radarr
|
|
- prowlarr
|
|
- lidarr
|
|
- readarr
|
|
- whisparr
|
|
- ollama
|
|
- promtail
|
|
notify: Reload systemd daemon
|
|
|
|
- name: Enable and start custom systemd services
|
|
ansible.builtin.systemd:
|
|
name: "{{ item }}"
|
|
state: started
|
|
enabled: true
|
|
loop:
|
|
- radarr
|
|
- prowlarr
|
|
- lidarr
|
|
- readarr
|
|
- ollama
|
|
- promtail
|
|
|
|
# Whisparr is installed but disabled (kept as-is)
|
|
- name: Ensure whisparr unit is present but disabled
|
|
ansible.builtin.systemd:
|
|
name: whisparr
|
|
enabled: false
|
|
|
|
# ── Package-managed services (ensure enabled) ──
|
|
|
|
- name: Ensure package-managed services are enabled
|
|
ansible.builtin.systemd:
|
|
name: "{{ item }}"
|
|
state: started
|
|
enabled: true
|
|
loop:
|
|
- sonarr
|
|
- jellyfin
|
|
- plexmediaserver
|
|
- transmission-daemon
|
|
- smbd
|
|
- vsftpd
|
|
- cloudflared
|
|
|
|
# ── Configuration files ──
|
|
|
|
- name: Deploy promtail config
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/services/promtail/config/london-b.yml"
|
|
dest: /etc/promtail/config.yml
|
|
mode: '0644'
|
|
notify: Restart promtail
|
|
|
|
- name: Deploy samba config
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/services/samba/config/london-b.conf"
|
|
dest: /etc/samba/smb.conf
|
|
mode: '0644'
|
|
backup: true
|
|
notify: Restart smbd
|
|
|
|
- name: Deploy transmission settings
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/services/transmission/config/settings.json"
|
|
dest: /etc/transmission-daemon/settings.json
|
|
owner: debian-transmission
|
|
group: debian-transmission
|
|
mode: '0600'
|
|
notify: Restart transmission
|
|
|
|
- name: Deploy vsftpd config
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/services/vsftpd/config/london-b.conf"
|
|
dest: /etc/vsftpd.conf
|
|
mode: '0644'
|
|
notify: Restart vsftpd
|
|
|
|
# ── Scripts ──
|
|
|
|
- name: Ensure scripts directory exists
|
|
ansible.builtin.file:
|
|
path: /root/scripts
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Deploy movie-rename-fix script
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/scripts/movie-rename-fix.fish"
|
|
dest: /root/scripts/movie-rename-fix.fish
|
|
mode: '0755'
|
|
|
|
# ── Cron jobs ──
|
|
|
|
- name: Movie rename fix (hourly)
|
|
ansible.builtin.cron:
|
|
name: "Movie rename fix"
|
|
minute: "0"
|
|
job: "/root/scripts/movie-rename-fix.fish"
|
|
user: root
|
|
|
|
- name: Restart radarr at midnight
|
|
ansible.builtin.cron:
|
|
name: "Restart radarr"
|
|
minute: "0"
|
|
hour: "0"
|
|
job: "systemctl restart radarr"
|
|
user: root
|
|
|
|
- name: Restart sonarr at midnight
|
|
ansible.builtin.cron:
|
|
name: "Restart sonarr"
|
|
minute: "0"
|
|
hour: "0"
|
|
job: "systemctl restart sonarr"
|
|
user: root
|