diff --git a/openvpn/dhparams.sls b/openvpn/dhparams.sls index 54aa14c..784a66b 100644 --- a/openvpn/dhparams.sls +++ b/openvpn/dhparams.sls @@ -5,6 +5,12 @@ {#- Some distributions use /etc/openvpn/{client,server} as their working directory #} {%- set config_dir = map.get("server", {}).get("conf_dir", map.conf_dir) %} {%- for dh in map.dh_files %} + {%- if loop.first %} +openvpn_dh_config_dir: + file.directory: + - name: {{ config_dir }} + - makedirs: True + {%- endif %} {%- set dh_file = config_dir ~ "/dh" ~ dh ~ ".pem" %} openvpn_create_dh_{{ dh }}: cmd.run: diff --git a/openvpn/general_config.sls b/openvpn/general_config.sls index 9b43c83..f65ea2b 100644 --- a/openvpn/general_config.sls +++ b/openvpn/general_config.sls @@ -42,8 +42,11 @@ openvpn_config_dir: {%- if grains.os_family == 'FreeBSD' %} openvpn_kldload_if_tap: kmod.present: - - name: if_tap + - name: {{ map.kernel_module_name }} - persist: True + - unless: + # In case the kernel has the module compiled in, we skip this state. + - sh -c "kldstat -v | grep --quiet --extended-regexp '^\s+[0-9]+ {{ map.kernel_module_name }}$'" - require_in: - sls: openvpn.config {%- endif %} diff --git a/openvpn/parameters/os_family/FreeBSD.yaml b/openvpn/parameters/os_family/FreeBSD.yaml index 8ed7381..8fa57b4 100644 --- a/openvpn/parameters/os_family/FreeBSD.yaml +++ b/openvpn/parameters/os_family/FreeBSD.yaml @@ -16,4 +16,5 @@ values: user: openvpn manage_user: false manage_group: false + kernel_module_name: if_tap ...