[Interface] Address = {{ vpn_ip }} PostUp = wg set %i private-key <(cat /etc/wireguard/privkey) ListenPort = 51820 {% for selected_host in groups['cluster_nodes']|difference([inventory_hostname]) %} [Peer] PublicKey = {{ hostvars[selected_host].wireguard_pubkey.stdout }} Endpoint = {{ hostvars[selected_host].public_ip }}:{{ hostvars[selected_host].public_vpn_port }} AllowedIPs = {{ hostvars[selected_host].vpn_ip }}/32 PersistentKeepalive = 25 {% endfor %} {% for host in other_vpn_nodes %} [Peer] PublicKey = {{ host.pubkey }} Endpoint = {{ host.public_ip }}:{{ host.public_vpn_port }} AllowedIPs = {{ host.vpn_ip }}/32 PersistentKeepalive = 25 {% endfor %}