pez-infra/ansible/roles/media_stack/tasks/main.yml
Rasmus Wejlgaard 5c44e51770 Remove cloudflared — replaced by Caddy reverse proxy
Cloudflared tunnels are no longer used. All traffic now routes through
Cloudflare DNS to Caddy on helsinki-a over Tailscale.

- Remove cloudflared systemd unit files (copenhagen-a, london-b)
- Remove cloudflared from media_stack role and copenhagen-a host_vars
- Remove cloudflared references from services README and host docs
- Remove cloudflared deploy trigger from CI workflow

Live service on london-b stopped and disabled. copenhagen-a was
unreachable but the tunnel is unused regardless.
2026-04-03 21:49:36 +00:00

153 lines
3.6 KiB
YAML

---
# media_stack role — deploys the full media stack on london-b
# Manages: *arr suite, jellyfin, plex, transmission, samba,
# ollama, promtail, 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
# ── Snap packages ──
- name: Install Overseerr via snap
community.general.snap:
name: overseerr
channel: latest/beta
state: present
- name: Ensure Overseerr snap service is running
ansible.builtin.command: snap start overseerr
changed_when: false
failed_when: false
# ── APT-managed services ──
- name: Install Syncthing
ansible.builtin.apt:
name: syncthing
state: present
- name: Enable and start Syncthing for pez user
ansible.builtin.systemd:
name: syncthing@pez
state: started
enabled: true
# ── 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