|
1 | 1 | # |
2 | | -# @summary This define creates a revocation on a certificate for a specified server. |
| 2 | +# @summary This define creates a revocation on a certificate for a specified server. There may not be an openvpn::client resource with the same name. |
3 | 3 | # |
| 4 | +# @param ensure Revoke certificate or allow certificate to be reissued |
4 | 5 | # @param server Name of the corresponding openvpn endpoint |
5 | 6 | # @example |
6 | 7 | # openvpn::client { |
|
15 | 16 | # |
16 | 17 | define openvpn::revoke ( |
17 | 18 | String $server, |
| 19 | + Enum['present', 'absent'] $ensure = present, |
18 | 20 | ) { |
19 | | - Openvpn::Server[$server] |
20 | | - -> Openvpn::Revoke[$name] |
| 21 | + if defined(Openvpn::Client[$name]) and $ensure == 'present' { |
| 22 | + fail("Can't revoke certificate for client '${name}' while there is still an Openvpn::Client configuration.") |
| 23 | + } |
21 | 24 |
|
22 | | - Openvpn::Client[$name] |
| 25 | + Openvpn::Server[$server] |
23 | 26 | -> Openvpn::Revoke[$name] |
24 | 27 |
|
25 | 28 | $server_directory = $openvpn::server_directory |
|
34 | 37 | default => fail("unexepected value for EasyRSA version, got '${openvpn::easyrsa_version}', expect 3.0."), |
35 | 38 | } |
36 | 39 |
|
37 | | - file { "${server_directory}/${server}/easy-rsa/revoked/${name}": |
38 | | - ensure => file, |
39 | | - require => Exec["revoke certificate for ${name} in context of ${server}"], |
40 | | - } |
41 | | - |
42 | | - exec { "revoke certificate for ${name} in context of ${server}": |
43 | | - command => $revocation_command, |
44 | | - cwd => "${server_directory}/${server}/easy-rsa", |
45 | | - provider => 'shell', |
46 | | - notify => Exec["renew crl.pem on ${server} because of revocation of ${name}"], |
47 | | - creates => "${server_directory}/${server}/easy-rsa/revoked/${name}", |
48 | | - } |
| 40 | + if $ensure == 'absent' { |
| 41 | + file { "${server_directory}/${server}/easy-rsa/revoked/${name}": |
| 42 | + ensure => absent, |
| 43 | + } |
| 44 | + } else { |
| 45 | + file { "${server_directory}/${server}/easy-rsa/revoked/${name}": |
| 46 | + ensure => file, |
| 47 | + require => Exec["revoke certificate for ${name} in context of ${server}"], |
| 48 | + } |
49 | 49 |
|
50 | | - exec { "renew crl.pem on ${server} because of revocation of ${name}": |
51 | | - command => $renew_command, |
52 | | - cwd => "${server_directory}/${server}/easy-rsa", |
53 | | - provider => 'shell', |
54 | | - refreshonly => true, |
55 | | - } |
| 50 | + exec { "revoke certificate for ${name} in context of ${server}": |
| 51 | + command => $revocation_command, |
| 52 | + cwd => "${server_directory}/${server}/easy-rsa", |
| 53 | + provider => 'shell', |
| 54 | + notify => Exec["renew crl.pem on ${server} because of revocation of ${name}"], |
| 55 | + creates => "${server_directory}/${server}/easy-rsa/revoked/${name}", |
| 56 | + } |
56 | 57 |
|
57 | | - if ($openvpn::easyrsa_version == '3.0') { |
58 | | - exec { "copy renewed crl.pem to ${server} keys directory because of revocation of ${name}": |
59 | | - command => "cp ${server_directory}/${server}/easy-rsa/keys/crl.pem ${server_directory}/${server}/crl.pem", |
60 | | - subscribe => Exec["renew crl.pem on ${server} because of revocation of ${name}"], |
| 58 | + exec { "renew crl.pem on ${server} because of revocation of ${name}": |
| 59 | + command => $renew_command, |
| 60 | + cwd => "${server_directory}/${server}/easy-rsa", |
61 | 61 | provider => 'shell', |
62 | 62 | refreshonly => true, |
63 | 63 | } |
| 64 | + |
| 65 | + if ($openvpn::easyrsa_version == '3.0') { |
| 66 | + exec { "copy renewed crl.pem to ${server} keys directory because of revocation of ${name}": |
| 67 | + command => "cp ${server_directory}/${server}/easy-rsa/keys/crl.pem ${server_directory}/${server}/crl.pem", |
| 68 | + subscribe => Exec["renew crl.pem on ${server} because of revocation of ${name}"], |
| 69 | + provider => 'shell', |
| 70 | + refreshonly => true, |
| 71 | + } |
| 72 | + } |
64 | 73 | } |
65 | 74 | } |
0 commit comments