---
application_id: "svc-net-wireguard"
WIREGUARD_CONFIG_DIR: "/etc/wireguard"
WIREGUARD_INTERFACES: "{{ lookup('config', application_id, 'networks.interfaces', []) }}"
WIREGUARD_ACTIVE_MESHES: >-
{{ dict(WIREGUARD_INTERFACES | selectattr('address') | map(attribute='name')
| zip(WIREGUARD_INTERFACES | selectattr('address'))) }}
WIREGUARD_MESH_NAMES: "{{ WIREGUARD_ACTIVE_MESHES.keys() | list | sort }}"
WIREGUARD_MESHLESS_COMPOSE_HOST: "{{ IS_COMPOSE_MODE and WIREGUARD_MESH_NAMES | length == 0 }}"
WIREGUARD_SWARM_MANAGER: "{{ 'svc-swarm-manager' in group_names }}"
WIREGUARD_AWAITED_KEYS: "{{ WIREGUARD_ACTIVE_MESHES | mesh_awaited_keys(WIREGUARD_SWARM_MANAGER | bool) }}"
WIREGUARD_PING_BINARY: "/bin/ping"
WIREGUARD_PRIVATE_KEY: "{{ lookup('config', application_id, 'secrets.credentials.mesh_private_key', '') }}"
WIREGUARD_IS_HUB: >-
{{ WIREGUARD_ACTIVE_MESHES.values() | map(attribute='is_hub') | select | list | length > 0 }}
WIREGUARD_DIALLED_PEERS: >-
{{ WIREGUARD_ACTIVE_MESHES.values()
| map('mesh_dialled_peers')
| flatten
| list }}
WIREGUARD_EXPECTED_PEERS: "{{ WIREGUARD_DIALLED_PEERS | map(attribute='address') | list }}"
WIREGUARD_DIALLED_ENDPOINTS: "{{ WIREGUARD_DIALLED_PEERS | map(attribute='endpoint') | unique | list }}"
WIREGUARD_HEADER_BYTES: 60
WIREGUARD_VXLAN_HEADER_BYTES: 50
WIREGUARD_PMTU_TARGETS: >-
{{ (wireguard_underlay.values() | list)
| default(NETWORK_PUBLIC_DNS_RESOLVERS, true) }}