########################################################### ## {{ ansible_managed }} ########################################################### port {{ item.port }} dev {{ item.dev + item.name }} persist-tun persist-key {% if item.ifconfig is defined %} ifconfig {{ item.ifconfig }} {% else %} topology {{ item.topology }} {% endif %} {% if item.type == 'server' %} proto {{ (item.proto == 'tcp') | ternary('tcp-server',item.proto) }} {% for route in item.push_routes %} route {{ route.net }} {{ route.mask }} {% endfor %} {% else %} resolv-retry infinite nobind proto {{ (item.proto == 'tcp') | ternary('tcp-client',item.proto) }} {% if item.remote is string %} remote {{ item.remote | string }} {% elif item.remote is iterable %} {% for remote in item.remote %} remote {{ remote }} {% endfor %} {% endif %} {% endif %} {% if item.auth == 'cert' %} {% if item.remote_cn is defined %} verify-x509-name {{ item.remote_cn }} name {% endif %} tls-{{ item.type }} {% if item.type == 'server' %} remote-cert-tls client {% if item.duplicate_dn %} duplicate-cn {% endif %} dh /etc/openvpn/{{ item }}.sh {% elif item.type == 'client' %} remote-cert-tls server {% if item.pull %} pull {% endif %} {% endif %} {% if item.pkcs12 is defined %} {{ item.pkcs12 }} {% elif item.ca is defined and item.cert is defined and item.key is defined %} {{ item.ca }} {{ item.cert }} {{ item.key }} {% endif %} {% if item.tls_crypt %} {{ item.tls_crypt }} {% elif item.tls_auth %} {{ item.tls_auth }} key-direction {{ (item.type == 'server') | ternary('0','1') }} {% endif %} {% elif item.auth == 'psk' %} {{ item.secret }} {% endif %} {% if item.cipher != 'default' %} cipher {{ item.cipher }} {% endif %} {% if item.auth_hash is defined %} auth {{ item.auth_hash }} {% endif %} passtos {% if item.compress != 'default' %} compress {{ item.compress }} {% endif %} {% for route in item.routes %} route {{ route.net }} {{ route.mask }} {% endfor %} keepalive 10 60 {% if item.proto == 'udp' %} mtu-test {% endif %} {% if item.rcvbuf is defined %} rcvbuf {{ item.rcvbuf }} {% endif %} {% if item.sndbuf is defined %} sndbuf {{ item.sndbuf }} {% endif %} {% if item.proto == 'udp' %} fast-io {% endif %}