|
100 | 100 | Integer $ssl_key_size = 2048, |
101 | 101 | Integer $ca_expire = 3650, |
102 | 102 | Integer $key_expire = 3650, |
| 103 | + Integer $crl_days = 30, |
103 | 104 | String $key_cn = '', |
104 | 105 | String $key_name = '', |
105 | 106 | String $key_ou = '', |
106 | 107 | Boolean $tls_auth = false, |
107 | 108 | ) { |
108 | 109 |
|
109 | 110 | include openvpn |
110 | | - |
111 | 111 | $group_to_set = $group ? { |
112 | 112 | undef => $openvpn::params::group, |
113 | 113 | default => $group |
|
124 | 124 | mode => '0750' |
125 | 125 | }) |
126 | 126 |
|
127 | | - exec { "copy easy-rsa to openvpn config folder ${name}": |
128 | | - command => "/bin/cp -r ${openvpn::params::easyrsa_source} ${etc_directory}/openvpn/${name}/easy-rsa", |
129 | | - creates => "${etc_directory}/openvpn/${name}/easy-rsa", |
130 | | - require => File["${etc_directory}/openvpn/${name}"], |
131 | | - } |
132 | | - |
133 | | - file { [ |
134 | | - "${etc_directory}/openvpn/${name}/easy-rsa/clean-all", |
135 | | - "${etc_directory}/openvpn/${name}/easy-rsa/build-dh", |
136 | | - "${etc_directory}/openvpn/${name}/easy-rsa/pkitool", |
137 | | - ]: |
138 | | - ensure => file, |
139 | | - mode => '0550', |
140 | | - require => Exec["copy easy-rsa to openvpn config folder ${name}"], |
| 127 | + file { "${etc_directory}/openvpn/${name}/easy-rsa" : |
| 128 | + ensure => directory, |
| 129 | + recurse => true, |
| 130 | + links => 'follow', |
| 131 | + source_permissions => 'use', |
| 132 | + group => 0, |
| 133 | + source => "file:${openvpn::params::easyrsa_source}", |
| 134 | + require => File["${etc_directory}/openvpn/${name}"], |
141 | 135 | } |
142 | 136 |
|
143 | 137 | file { "${etc_directory}/openvpn/${name}/easy-rsa/revoked": |
144 | 138 | ensure => directory, |
145 | 139 | mode => '0750', |
146 | 140 | recurse => true, |
147 | | - require => Exec["copy easy-rsa to openvpn config folder ${name}"], |
| 141 | + require => File["${etc_directory}/openvpn/${name}/easy-rsa"], |
148 | 142 | } |
149 | 143 |
|
150 | | - file { "${etc_directory}/openvpn/${name}/easy-rsa/vars": |
151 | | - ensure => file, |
152 | | - mode => '0550', |
153 | | - content => template('openvpn/vars.erb'), |
154 | | - require => Exec["copy easy-rsa to openvpn config folder ${name}"], |
155 | | - } |
| 144 | + case $openvpn::params::easyrsa_version { |
| 145 | + '2.0': { |
| 146 | + file { "${etc_directory}/openvpn/${name}/easy-rsa/vars": |
| 147 | + ensure => file, |
| 148 | + mode => '0550', |
| 149 | + content => template('openvpn/vars.erb'), |
| 150 | + require => File["${etc_directory}/openvpn/${name}/easy-rsa"], |
| 151 | + } |
156 | 152 |
|
157 | | - file { "${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf": |
158 | | - require => Exec["copy easy-rsa to openvpn config folder ${name}"], |
159 | | - } |
| 153 | + if $openvpn::params::link_openssl_cnf == true { |
| 154 | + File["${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf"] { |
| 155 | + ensure => link, |
| 156 | + target => "${etc_directory}/openvpn/${name}/easy-rsa/openssl-1.0.0.cnf", |
| 157 | + before => Exec["initca ${name}"], |
| 158 | + } |
| 159 | + } |
| 160 | + |
| 161 | + exec { "generate dh param ${name}": |
| 162 | + command => '. ./vars && ./clean-all && ./build-dh', |
| 163 | + timeout => 1800, |
| 164 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 165 | + creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/dh${ssl_key_size}.pem", |
| 166 | + provider => 'shell', |
| 167 | + require => File["${etc_directory}/openvpn/${name}/easy-rsa/vars"], |
| 168 | + } |
| 169 | + |
| 170 | + exec { "initca ${name}": |
| 171 | + command => '. ./vars && ./pkitool --initca', |
| 172 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 173 | + creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/ca.key", |
| 174 | + provider => 'shell', |
| 175 | + require => Exec["generate dh param ${name}"], |
| 176 | + } |
| 177 | + |
| 178 | + exec { "generate server cert ${name}": |
| 179 | + command => ". ./vars && ./pkitool --server ${common_name}", |
| 180 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 181 | + creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/${common_name}.key", |
| 182 | + provider => 'shell', |
| 183 | + require => Exec["initca ${name}"], |
| 184 | + } |
| 185 | + |
| 186 | + exec { "create crl.pem on ${name}": |
| 187 | + command => ". ./vars && KEY_CN='' KEY_OU='' KEY_NAME='' KEY_ALTNAMES='' openssl ca -gencrl -out ${etc_directory}/openvpn/${name}/crl.pem -config ${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf", |
| 188 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 189 | + creates => "${etc_directory}/openvpn/${name}/crl.pem", |
| 190 | + provider => 'shell', |
| 191 | + require => Exec["generate server cert ${name}"], |
| 192 | + } |
160 | 193 |
|
161 | | - if $openvpn::params::link_openssl_cnf == true { |
162 | | - File["${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf"] { |
163 | | - ensure => link, |
164 | | - target => "${etc_directory}/openvpn/${name}/easy-rsa/openssl-1.0.0.cnf", |
165 | | - before => Exec["initca ${name}"], |
166 | 194 | } |
167 | | - } |
| 195 | + '3.0': { |
| 196 | + file { "${etc_directory}/openvpn/${name}/easy-rsa/vars": |
| 197 | + ensure => file, |
| 198 | + mode => '0550', |
| 199 | + content => epp('openvpn/vars-30.epp', |
| 200 | + { |
| 201 | + 'etc_directory' => $etc_directory, |
| 202 | + 'openvpn_server' => $name, |
| 203 | + 'ssl_key_size' => $ssl_key_size, |
| 204 | + 'ca_expire' => $ca_expire, |
| 205 | + 'key_expire' => $key_expire, |
| 206 | + 'crl_days' => $crl_days, |
| 207 | + 'country' => $country, |
| 208 | + 'province' => $province, |
| 209 | + 'city' => $city, |
| 210 | + 'organization' => $organization, |
| 211 | + 'email' => $email, |
| 212 | + 'key_cn' => $key_cn, |
| 213 | + 'key_ou' => $key_ou, |
| 214 | + } |
| 215 | + ), |
| 216 | + require => File["${etc_directory}/openvpn/${name}/easy-rsa"], |
| 217 | + } |
168 | 218 |
|
169 | | - exec { "generate dh param ${name}": |
170 | | - command => '. ./vars && ./clean-all && ./build-dh', |
171 | | - timeout => 1800, |
172 | | - cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
173 | | - creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/dh${ssl_key_size}.pem", |
174 | | - provider => 'shell', |
175 | | - require => File["${etc_directory}/openvpn/${name}/easy-rsa/vars"], |
176 | | - } |
| 219 | + if $openvpn::params::link_openssl_cnf == true { |
| 220 | + File["${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf"] { |
| 221 | + ensure => link, |
| 222 | + target => "${etc_directory}/openvpn/${name}/easy-rsa/openssl-1.0.cnf", |
| 223 | + before => Exec["initca ${name}"], |
| 224 | + } |
| 225 | + } |
177 | 226 |
|
178 | | - exec { "initca ${name}": |
179 | | - command => '. ./vars && ./pkitool --initca', |
180 | | - cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
181 | | - creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/ca.key", |
182 | | - provider => 'shell', |
183 | | - require => Exec["generate dh param ${name}"], |
| 227 | + exec { "initca ${name}": |
| 228 | + command => './easyrsa --batch init-pki && ./easyrsa --batch build-ca nopass', |
| 229 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 230 | + creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/ca.crt", |
| 231 | + provider => 'shell', |
| 232 | + require => File["${etc_directory}/openvpn/${name}/easy-rsa/vars"], |
| 233 | + } |
| 234 | + |
| 235 | + exec { "generate dh param ${name}": |
| 236 | + command => './easyrsa --batch gen-dh', |
| 237 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 238 | + creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/dh.pem", |
| 239 | + provider => 'shell', |
| 240 | + require => Exec["generate server cert ${name}"], |
| 241 | + } |
| 242 | + |
| 243 | + exec { "generate server cert ${name}": |
| 244 | + command => "./easyrsa build-server-full ${common_name} nopass", |
| 245 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 246 | + creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/private/${common_name}.key", |
| 247 | + provider => 'shell', |
| 248 | + require => Exec["initca ${name}"], |
| 249 | + } |
| 250 | + |
| 251 | + file { "${etc_directory}/openvpn/${name}/easy-rsa/keys/ca.crt": |
| 252 | + mode => '0640', |
| 253 | + require => Exec["initca ${name}"], |
| 254 | + } |
| 255 | + |
| 256 | + exec { "create crl.pem on ${name}": |
| 257 | + command => ". ./vars && EASYRSA_REQ_CN='' EASYRSA_REQ_OU='' openssl ca -gencrl -out ${etc_directory}/openvpn/${name}/crl.pem -config ${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf", |
| 258 | + cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
| 259 | + creates => "${etc_directory}/openvpn/${name}/crl.pem", |
| 260 | + group => $group_to_set, |
| 261 | + provider => 'shell', |
| 262 | + require => Exec["generate server cert ${name}"], |
| 263 | + } |
| 264 | + |
| 265 | + } |
| 266 | + default: { |
| 267 | + fail("unexepected value for EasyRSA version, got '${openvpn::params::easyrsa_version}', expect 2.0 or 3.0.") |
| 268 | + } |
184 | 269 | } |
185 | 270 |
|
186 | | - exec { "generate server cert ${name}": |
187 | | - command => ". ./vars && ./pkitool --server ${common_name}", |
188 | | - cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
189 | | - creates => "${etc_directory}/openvpn/${name}/easy-rsa/keys/${common_name}.key", |
190 | | - provider => 'shell', |
191 | | - require => Exec["initca ${name}"], |
| 271 | + file { "${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf": |
| 272 | + require => File["${etc_directory}/openvpn/${name}/easy-rsa"], |
192 | 273 | } |
193 | 274 |
|
194 | 275 | file { "${etc_directory}/openvpn/${name}/keys": |
195 | 276 | ensure => link, |
196 | 277 | target => "${etc_directory}/openvpn/${name}/easy-rsa/keys", |
197 | | - require => Exec["copy easy-rsa to openvpn config folder ${name}"], |
198 | | - } |
199 | | - |
200 | | - exec { "create crl.pem on ${name}": |
201 | | - command => ". ./vars && KEY_CN='' KEY_OU='' KEY_NAME='' KEY_ALTNAMES='' openssl ca -gencrl -out ${etc_directory}/openvpn/${name}/crl.pem -config ${etc_directory}/openvpn/${name}/easy-rsa/openssl.cnf", |
202 | | - cwd => "${etc_directory}/openvpn/${name}/easy-rsa", |
203 | | - creates => "${etc_directory}/openvpn/${name}/crl.pem", |
204 | | - provider => 'shell', |
205 | | - require => Exec["generate server cert ${name}"], |
| 278 | + mode => '0640', |
| 279 | + require => File["${etc_directory}/openvpn/${name}/easy-rsa"], |
206 | 280 | } |
207 | 281 |
|
208 | 282 | file { "${etc_directory}/openvpn/${name}/crl.pem": |
209 | 283 | mode => '0640', |
210 | | - group => $group_to_set, |
211 | 284 | require => Exec["create crl.pem on ${name}"], |
212 | 285 | } |
213 | 286 |
|
|
226 | 299 | target => "${etc_directory}/openvpn/${name}/crl.pem", |
227 | 300 | require => Exec["create crl.pem on ${name}"], |
228 | 301 | } |
229 | | - |
230 | 302 | } |
0 commit comments