# Usage: # ansible-playbook -i hosts playbooks/deploy.yaml --vault-id vaultid --tags [] # # Tags: # ddclient, wireguard, nginx, websites, samba # nextcloud, bitwarden, searxng, monitoring (these all depend on the nginx tag) # # Install: # git submodule update --remote --merge # python3 -m venv ~/venv/ansible # source $HOME/venv/ansible/bin/activate # pip install --upgrade pip # pip install 'ansible<2.10' 'jmespath' # ansible-galaxy install -r requirements.yml # ansible-galaxy collection install -r requirements.yml # --- ## 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 }}'