# Usage: # make run file=playbooks/deploy.yaml tags="" # # Dry Run: # make dry-run file=playbooks/deploy.yaml tags="" # # Available tags: # ddclient, wireguard, nginx, websites, # samba, nextcloud, bitwarden, searxng, # monitoring, transmission, media_downloader # # Install: # make install # # ASSUMPTIONS: # You should already have docker installed. # See the README.md for base image setup section. # --- ## Non Docker Services ## - hosts: compute gather_facts: true tags: 'ddclient' become: true become_method: 'doas' roles: - role: ddclient vars: ddclient_proto: 'freedns' ddclient_user: '{{ vault_ddclient_user }}' ddclient_password: '{{ vault_ddclient_password }}' ddclient_domain: '{{ vpn_domain }}' - hosts: compute gather_facts: true tags: 'wireguard' become: true become_method: 'doas' roles: - role: wireguard vars: wireguard_server_priv_key: '{{ vault_wireguard_server_priv_key }}' wireguard_server_pub_key: 'iwsriL3AUn4dgKfsSNgJtj/G808k4jXvSC+mM70YnAw=' wireguard_server_listen_port: 51820 wireguard_server_ip: '192.168.10.1/32' wireguard_peers: - peer_ip: '192.168.10.2/32' # my phone peer_key: '/mFv6y9QA8dhX/A9fFn+mzg/SZq4BZPeNofm1w754y8=' - peer_ip: '192.168.10.3/32' # personal laptop peer_key: '6+t6FbEHSAOuzBtQwb0bDqfFa5Kvfkb2QIUGpRKA5Eg=' - peer_ip: '192.168.10.4/32' # vps peer_key: 'oz2jxeSUWD4r5g3y7XuSItqSiqOOJz8vulYYVXAsKS8=' - hosts: compute gather_facts: false tags: 'websites' become: false roles: - role: website vars: websites: '{{ nginx_websites }}' git_user: '{{ vault_git_user }}' git_pass: '{{ vault_git_password }}' sites_data_root: '{{ vol_data }}/sites' # Access: http://art-jr/data - hosts: compute gather_facts: true tags: 'samba' become: true become_method: 'doas' roles: - role: samba vars: samba_user: '{{ vault_samba_user }}' samba_user_pass: '{{ vault_samba_password }}' samba_data_root: '{{ vol_media }}' ## Docker Services ## - hosts: compute gather_facts: false tags: 'nginx' become: false roles: - role: nginx_docker vars: nginx_website_domains: '{{ ["default"] + (nginx_websites | map(attribute="name") | list) }}' nginx_global_apps_domain: '{{ apps_domain }}' nginx_apps_confs: '{{ apps_conf_map | dict2items(key_name="app", value_name="conf") }}' nginx_conf_root: '{{ vol_data }}/nginx' nginx_static_html_root: '{{ vol_data }}/sites' nginx_certs_root: '{{ vol_data }}/letsencrypt' - hosts: compute gather_facts: false tags: 'nextcloud' become: false roles: - role: nextcloud vars: nextcloud_domain: '{{ apps_conf_map["nextcloud"]["access_domain"] }}' nextcloud_host_port: '{{ apps_conf_map["nextcloud"]["port"] }}' nextcloud_data_root: '{{ vol_data }}/nextcloud' nextcloud_postgres_password: '{{ vault_nextcloud_postgres_password }}' - hosts: compute gather_facts: false tags: 'searxng' become: false roles: - role: searxng vars: searxng_domain: '{{ apps_conf_map["searxng"]["access_domain"] }}' searxng_host_port: '{{ apps_conf_map["searxng"]["port"] }}' searxng_data_root: '{{ vol_data }}/searxng' searxng_secret_key: '{{ vault_searxng_secret_key }}' - hosts: compute gather_facts: false tags: 'bitwarden' become: false roles: - role: bitwarden vars: bitwarden_host_port: '{{ apps_conf_map["bitwarden"]["port"] }}' bitwarden_data_dir: '{{ vol_data }}/bitwarden' - hosts: compute gather_facts: false tags: 'transmission' become: false roles: - role: transmission vars: transmission_host_port: '{{ apps_conf_map["transmission"]["port"] }}' transmission_user: '{{ vault_transmission_user }}' transmission_password: '{{ vault_transmission_password }}' transmission_root_dir: '{{ vol_media }}/transmission' - hosts: compute gather_facts: false tags: 'media_downloader' become: false roles: - role: media_downloader vars: media_downloader_sonarr_host_port: '{{ apps_conf_map["sonarr"]["port"] }}' media_downloader_radarr_host_port: '{{ apps_conf_map["radarr"]["port"] }}' media_downloader_prowlarr_host_port: '{{ apps_conf_map["prowlarr"]["port"] }}' media_downloader_bazarr_host_port: '{{ apps_conf_map["bazarr"]["port"] }}' media_downloader_transmission_root_dir: '{{ vol_media }}/transmission' media_downloader_media_root_dir: '{{ vol_media }}/media' - hosts: compute gather_facts: true tags: 'monitoring' roles: - role: 'monitoring' vars: monitoring_root_dir: '{{ vol_data }}/monitoring' monitoring_apps_confs: '{{ apps_conf_map | dict2items(key_name="app", value_name="conf") }}' monitoring_static_sites: '{{ nginx_websites }}'