ansible/roles/wireguard/templates/wg-multi.conf.j2

59 lines
1.5 KiB
Django/Jinja

{%- macro render_interface(i) %}
[Interface]
{% if "private_key" in i %}
PrivateKey = {{ i.private_key }}
{% endif %}
{% if "address" in i %}
{% if i.address is string %}
Address = {{ i.address }}
{% elif i.address is sequence %}
{% for address in i.address %}
Address = {{ address }}
{% endfor %}
{% endif %}
{% endif %}
{% if "listen_port" in i %}
ListenPort = {{ i.listen_port }}
{% endif %}
{% if "table" in i %}
Table = {{ i.table }}
{% endif %}
{% endmacro -%}
{%- macro render_peer(p) %}
{% if "comment" in p %}
# {{ p.comment }}
{% endif %}
[Peer]
{% if "public_key" in p %}
PublicKey = {{ p.public_key }}
{% endif %}
{% if "endpoint" in p %}
Endpoint = {{ p.endpoint }}
{% endif %}
{% if "allowed_ips" in p %}
{% if p.allowed_ips is string %}
AllowedIPs = {{ p.allowed_ips }}
{% elif p.allowed_ips is sequence %}
AllowedIPs = {{ p.allowed_ips | join(', ') }}
{% endif %}
{% endif %}
{% if "preshared_key" in p %}
PresharedKey = {{ p.preshared_key }}
{% endif %}
{% if "persistent_keepalive" in p %}
PersistentKeepalive = {{ p.persistent_keepalive }}
{% endif %}
{% endmacro -%}
{% if wireguard_interfaces[_wireguard_interface] and
wireguard_interfaces[_wireguard_interface] is mapping %}
{{ render_interface(wireguard_interfaces[_wireguard_interface]) }}
{% endif %}
{% if wireguard_peers[_wireguard_interface] and
wireguard_peers[_wireguard_interface] is sequence %}
{% for peer in wireguard_peers[_wireguard_interface] %}
{{ render_peer(peer) }}
{% endfor %}
{% endif %}