ansible/playbooks/home_media.yml

129 lines
4.3 KiB
YAML
Raw Normal View History

2021-03-26 21:58:55 -05:00
#!/usr/bin/env ansible-playbook
# vim:ft=ansible:
---
# Home media storage Pi
- hosts: pi-media-1.desu.ltd
module_defaults:
docker_container:
state: started
restart_policy: unless-stopped
pull: yes
2021-03-26 21:58:55 -05:00
tasks:
- name: assure mount directory
2021-06-20 19:15:15 -05:00
file: path=/data state=directory mode=0755
2021-03-26 21:58:55 -05:00
tags: [ pis, storage ]
- name: assure mount
mount: path=/data src=LABEL=mass state=mounted fstype=ext4
tags: [ pis, storage ]
- name: assure directories in mount
2021-06-20 19:15:15 -05:00
file: path=/data/{{ item }} state=directory mode=0755
2021-03-26 21:58:55 -05:00
with_items:
- nfs
- postgresql
tags: [ pis, storage ]
- name: assure symlinks to directories in mount
file: path={{ item.path }} src=/data/{{ item.src }} state=link
with_items:
- { path: /var/lib/postgresql, src: postgresql }
- { path: /srv/nfs, src: nfs }
tags: [ pis, storage ]
- name: ensure docker network
docker_network: name=web
tags: [ docker ]
- name: include tasks for apps
include_tasks: tasks/app/{{ task }}
with_items:
- redis.yml
loop_control:
loop_var: task
tags: [ always ]
- name: include tasks for web services
include_tasks: tasks/web/{{ task }}
with_items:
- transmission.yml
- jackett.yml
- sonarr.yml
- radarr.yml
loop_control:
loop_var: task
tags: [ always ]
2021-03-26 21:58:55 -05:00
roles:
- role: backup
vars:
backup_s3backup_list_extra:
- /data/transmisson
- /data/jackett
- /data/sonarr
backup_time: "Mon *-*-* 02:00:00"
2021-03-26 21:58:55 -05:00
tags: [ backup ]
2021-09-27 15:12:20 -05:00
- role: ingress
vars:
ingress_container_image: "nginx:latest"
ingress_container_ports:
- 80:80
2021-09-27 17:18:30 -05:00
ingress_container_config_mount: /etc/nginx/conf.d
2021-09-27 15:12:20 -05:00
ingress_container_persist_dir: /data/nginx
ingress_listen_args: 80
ingress_listen_tls: no
ingress_servers:
- name: transmission.local.desu.ltd
proxy_pass: http://transmission:9091
- name: jackett.local.desu.ltd
proxy_pass: http://jackett:9117
- name: sonarr.local.desu.ltd
proxy_pass: http://sonarr:8989
- name: radarr.local.desu.ltd
proxy_pass: http://radarr:7878
tags: [ ingress ]
- role: geerlingguy.postgresql
2021-03-26 21:58:55 -05:00
vars:
postgresql_global_config_options:
- option: listen_addresses
value: 192.168.103.1,172.23.103.1,127.0.0.1
2021-03-26 21:58:55 -05:00
postgresql_hba_entries:
- { type: local, database: all, user: postgres, auth_method: peer }
- { type: local, database: all, user: all, auth_method: md5 }
- { type: host, database: all, user: all, address: '127.0.0.0/8', auth_method: md5 }
- { type: host, database: all, user: all, address: '::1/128', auth_method: md5 }
# Used for internal access from other nodes
- { type: host, database: all, user: all, address: '192.168.0.0/16', auth_method: md5 }
# Allow hosts over zerotier
- { type: host, database: all, user: all, address: '172.23.0.0/16', auth_method: md5 }
postgresql_users:
- name: grafana
password: "{{ secret_grafana_local_db_pass }}"
2021-08-24 12:40:32 -05:00
- name: gulagbot
password: "{{ secret_gulagbot_local_db_pass }}"
2021-05-02 15:25:14 -05:00
- name: firefly
password: "{{ secret_firefly_db_pass }}"
2021-08-24 12:40:32 -05:00
- name: nagios
password: "{{ secret_postgresql_monitoring_password }}"
2021-03-26 21:58:55 -05:00
postgresql_databases:
2021-04-02 16:31:48 -05:00
- name: gulagbot
owner: gulagbot
2021-03-26 21:58:55 -05:00
- name: grafana
owner: grafana
2021-05-02 15:25:14 -05:00
- name: firefly
owner: firefly
2021-03-26 21:58:55 -05:00
tags: [ pis, storage, psql ]
- role: geerlingguy.nfs
2021-03-26 21:58:55 -05:00
vars:
nfs_exports:
- "/data/shared/media 192.168.0.0/16(ro,no_root_squash,sync) 172.23.0.0/16(ro,no_root_squash,sync)"
2021-03-26 21:58:55 -05:00
tags: [ pis, storage, nfs ]
- role: bertvv.samba
vars:
samba_users:
- name: salt
password: "{{ samba_user_salt_password }}"
samba_shares:
- name: media
browseable: yes
comment: 'Media downloaded by that one Pi'
2021-10-07 10:40:31 -05:00
group: salt
guest_ok: yes
owner: 911
public: yes
path: /data/shared/media
tags: [ pis, storage, samba, smb ]