{%- macro output_if_set(object, lookup_key, output_key) %} {%- if object.get(lookup_key) %} {{output_key}} = {{object.get('lookup_key')}} {%- endif %} {%- endmacro %} {%- macro output_list_if_set(lookup_key, output_key) %} {%- for item in object.get(lookup_key, []) %} {{output_key}} = {{item}} {%- for %} {%- endmacro %} [Interface] {{ output_list_if_set(interface, 'address', 'Address') %} {{ output_if_set(interface, 'listenport', 'ListenPort') %} {{ output_list_if_set(interface, 'dns', 'DNS') %} {{ output_if_set(interface, 'mtu', 'MTU') %} {{ output_if_set(interface, 'privatekey', 'PrivateKey') %} {{ output_if_set(interface, 'table', 'Table') %} {{ output_if_set(interface, 'preup', 'PreUp') %} {{ output_if_set(interface, 'postup', 'PostUp') %} {{ output_if_set(interface, 'predown', 'PreDown') %} {{ output_if_set(interface, 'postdown', 'PostDown') %} {{ output_if_set(interface, 'saveconfig', 'SaveConfig') %} {{ output_if_set(interface, 'fwmark', 'FwMark') %} {%- for peer in interface.get('peers', []) %} [Peer] {{ output_if_set(peer, 'publickey', 'PublicKey') %} {{ output_if_set(peer, 'presharedkey', 'PresharedKey') %} {{ output_list_if_set(peer, 'allowedips', 'AllowedIPs') %} {{ output_if_set(peer, 'endpoint', 'Endpoint') %} {{ output_if_set(peer, 'persistentkeepalive', 'PersistentKeepalive') %} {%- endfor %}