Skip to content

Commit 24e2926

Browse files
committed
(profile::core::openvpn) add openvpn install
1 parent a6d01ee commit 24e2926

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# @summary
2+
# Installs openvpn connect server.
3+
#
4+
# @param version
5+
# Sets version lock for openvpn package.
6+
#
7+
# @param cluster
8+
# Generates an additional certificate for vpn round robin setup.
9+
#
10+
class profile::core::openvpn (
11+
String[1] $version,
12+
String[1] $cluster,
13+
) {
14+
include yum::plugin::versionlock
15+
include profile::core::letsencrypt
16+
17+
yumrepo { 'as-repo-rhel9':
18+
ensure => 'present',
19+
name => 'openvpn-access-server',
20+
descr => 'OpenVPN Access Server',
21+
baseurl => 'http://as-repository.openvpn.net/as/yum/rhel9/',
22+
gpgkey => 'https://as-repository.openvpn.net/as-repo-public.gpg',
23+
gpgcheck => '1',
24+
enabled => '1',
25+
}
26+
27+
package { 'openvpn-as':
28+
ensure => $version,
29+
require => Yumrepo['as-repo-rhel9'],
30+
notify => Yum::Versionlock['openvpn-as'],
31+
}
32+
33+
yum::versionlock { 'openvpn-as':
34+
ensure => 'present',
35+
version => $version,
36+
release => '1.el9',
37+
arch => 'x86_64',
38+
}
39+
40+
# Host FQDN
41+
$fqdn = fact('networking.fqdn')
42+
43+
# Signed Certificate Location
44+
$le_root = "/etc/letsencrypt/live/${fqdn}"
45+
46+
# Generate and sign certificate
47+
letsencrypt::certonly { $fqdn:
48+
plugin => 'dns-route53',
49+
manage_cron => true,
50+
}
51+
52+
# Generate an additional certificate for round robin setup.
53+
letsencrypt::certonly { $cluster:
54+
plugin => 'dns-route53',
55+
manage_cron => true,
56+
}
57+
58+
# Create symbolic links for certificates
59+
file { '/usr/local/openvpn_as/etc/web-ssl/server.crt':
60+
ensure => 'link',
61+
target => "${le_root}/cert.pem",
62+
force => true,
63+
require => Letsencrypt::Certonly[$fqdn],
64+
}
65+
66+
file { '/usr/local/openvpn_as/etc/web-ssl/server.key':
67+
ensure => 'link',
68+
target => "${le_root}/privkey.pem",
69+
force => true,
70+
require => Letsencrypt::Certonly[$fqdn],
71+
}
72+
73+
file { '/usr/local/openvpn_as/etc/web-ssl/ca.crt':
74+
ensure => 'link',
75+
target => "${le_root}/fullchain.pem",
76+
force => true,
77+
require => Letsencrypt::Certonly[$fqdn],
78+
}
79+
80+
# Manage OpenVPN Access Server service
81+
service { 'openvpnas':
82+
ensure => 'running',
83+
enable => true,
84+
require => Package['openvpn-as'],
85+
}
86+
}

0 commit comments

Comments
 (0)