128 lines
4.2 KiB
YAML
Executable File
128 lines
4.2 KiB
YAML
Executable File
#!/usr/bin/env ansible-playbook
|
|
# vim:ft=ansible:
|
|
---
|
|
# Mass storage Pis
|
|
- hosts: pi-storage-1.desu.ltd
|
|
tasks:
|
|
- name: assure mount directory
|
|
file: path=/data state=directory
|
|
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
|
|
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 ]
|
|
roles:
|
|
- role: backup
|
|
vars:
|
|
backup_list:
|
|
- /data
|
|
backup_time: "Mon *-*-* 02:00:00"
|
|
- role: motd
|
|
vars:
|
|
motd_watch_services_extra:
|
|
- docker
|
|
- postgresql
|
|
- role: postgresql
|
|
vars:
|
|
postgresql_global_config_options:
|
|
- option: listen_addresses
|
|
value: 192.168.103.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 }
|
|
postgresql_users:
|
|
- name: grafana
|
|
password: "{{ secret_grafana_local_db_pass }}"
|
|
postgresql_databases:
|
|
- name: grafana
|
|
owner: grafana
|
|
tags: [ pis, storage, psql ]
|
|
- role: nfs
|
|
vars:
|
|
nfs_exports:
|
|
- "/srv/nfs 172.23.0.0/16(ro,no_root_squash,sync)"
|
|
- "/srv/nfs/bulk 192.168.0.0/16(rw,no_root_squash,sync) 172.23.0.0/16(rw,no_root_squash,sync)"
|
|
- "/srv/nfs/bulk/media 192.168.0.0/16(rw,no_root_squash,sync) 172.23.0.0/16(rw,no_root_squash,sync)"
|
|
- "/srv/nfs/k8s 192.168.102.0/24(rw,no_root_squash,sync) 172.23.0.0/16(ro,no_root_squash,sync)"
|
|
tags: [ pis, storage, nfs ]
|
|
# Multipurpose Pis running unbound
|
|
- hosts: pi-mp-1.desu.ltd,pi-mp-2.desu.ltd
|
|
vars:
|
|
container_default_behavior: no_defaults
|
|
tasks:
|
|
- name: docker deploy unbound
|
|
docker_container:
|
|
name: unbound
|
|
image: rehashedsalt/unbound-desu-local:latest
|
|
restart_policy: unless-stopped
|
|
pull: yes
|
|
ports:
|
|
- "{{ ansible_facts.eth0.ipv4.address }}:53:5053/tcp"
|
|
- "{{ ansible_facts.eth0.ipv4.address }}:53:5053/udp"
|
|
tags: [ pis, mp, unbound ]
|
|
roles:
|
|
- role: motd
|
|
vars:
|
|
motd_watch_services_extra:
|
|
- docker
|
|
- isc-dhcp-server
|
|
motd_watch_containers_extra:
|
|
- unbound
|
|
tags: [ pis, mp, motd ]
|
|
# And also serving DHCP
|
|
- hosts: pi-mp-1.desu.ltd
|
|
vars_files:
|
|
- vars/desulocal-dhcp.yml
|
|
roles:
|
|
- role: netplan-static-ip
|
|
tags: [ pis, mp, dhcp, static-ip ]
|
|
- role: dhcp
|
|
vars:
|
|
dhcp_global_failover_peer: failover-group
|
|
dhcp_global_failover:
|
|
role: primary
|
|
address: 192.168.103.100
|
|
port: 647
|
|
peer_address: 192.168.103.101
|
|
peer_port: 647
|
|
max_response_delay: 15
|
|
max_unacked_updates: 10
|
|
load_balance_max_seconds: 5
|
|
split: 255
|
|
mclt: 3600
|
|
tags: [ pis, mp, dhcp ]
|
|
- hosts: pi-mp-2.desu.ltd
|
|
vars_files:
|
|
- vars/desulocal-dhcp.yml
|
|
roles:
|
|
- role: netplan-static-ip
|
|
tags: [ pis, mp, dhcp, static-ip ]
|
|
- role: dhcp
|
|
vars:
|
|
dhcp_global_failover_peer: failover-group
|
|
dhcp_global_failover:
|
|
role: secondary
|
|
address: 192.168.103.101
|
|
port: 647
|
|
peer_address: 192.168.103.100
|
|
peer_port: 647
|
|
max_response_delay: 15
|
|
max_unacked_updates: 10
|
|
load_balance_max_seconds: 5
|
|
tags: [ pis, mp, dhcp ]
|