141 lines
4.7 KiB
YAML
Executable File
141 lines
4.7 KiB
YAML
Executable File
#!/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
|
|
tasks:
|
|
- name: assure mount directory
|
|
file: path=/data state=directory mode=0755
|
|
tags: [ pis, storage ]
|
|
- name: assure mount
|
|
mount: path=/data src=LABEL=mass state=mounted fstype=ext4
|
|
tags: [ pis, storage ]
|
|
- name: assure directories in mount
|
|
file: path=/data/{{ item }} state=directory mode=0755
|
|
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: ensure docker nginx config
|
|
copy:
|
|
dest: /data/nginx/conf.d/vhosts.conf
|
|
mode: "0644"
|
|
content: |
|
|
server {
|
|
listen 80 default_server;
|
|
server_name transmission.local.desu.ltd;
|
|
location / {
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_pass http://transmission:9091;
|
|
}
|
|
}
|
|
server {
|
|
listen 80;
|
|
server_name jackett.local.desu.ltd;
|
|
location / {
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_pass http://jackett:9117;
|
|
}
|
|
}
|
|
server {
|
|
listen 80;
|
|
server_name sonarr.local.desu.ltd;
|
|
location / {
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_pass http://sonarr:8989;
|
|
}
|
|
}
|
|
server {
|
|
listen 80;
|
|
server_name radarr.local.desu.ltd;
|
|
location / {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection $http_connection;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_pass http://radarr:7878;
|
|
}
|
|
}
|
|
tags: [ docker, ingress ]
|
|
- 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
|
|
- ingress-insecure.yml
|
|
loop_control:
|
|
loop_var: task
|
|
tags: [ always ]
|
|
roles:
|
|
- role: backup
|
|
vars:
|
|
backup_s3backup_list_extra:
|
|
- /data/transmisson
|
|
- /data/jackett
|
|
- /data/sonarr
|
|
backup_time: "Mon *-*-* 02:00:00"
|
|
tags: [ backup ]
|
|
- role: geerlingguy.postgresql
|
|
vars:
|
|
postgresql_global_config_options:
|
|
- option: listen_addresses
|
|
value: 192.168.103.1,172.23.103.1,127.0.0.1
|
|
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 }}"
|
|
- name: gulagbot
|
|
password: "{{ secret_gulagbot_local_db_pass }}"
|
|
- name: firefly
|
|
password: "{{ secret_firefly_db_pass }}"
|
|
- name: nagios
|
|
password: "{{ secret_postgresql_monitoring_password }}"
|
|
postgresql_databases:
|
|
- name: gulagbot
|
|
owner: gulagbot
|
|
- name: grafana
|
|
owner: grafana
|
|
- name: firefly
|
|
owner: firefly
|
|
tags: [ pis, storage, psql ]
|
|
- role: geerlingguy.nfs
|
|
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)"
|
|
tags: [ pis, storage, nfs ]
|