Skip to content

Commit accaa4b

Browse files
committed
🎉 Add certbot-dns-ovh plugin support
1 parent 93608ee commit accaa4b

File tree

4 files changed

+81
-1
lines changed

4 files changed

+81
-1
lines changed

manifests/certonly.pp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,17 @@
118118
]
119119
}
120120

121+
'dns-ovh': {
122+
require letsencrypt::plugin::dns_ovh
123+
$_domains = join($domains, '\' -d \'')
124+
$plugin_args = [
125+
"--cert-name '${title}' -d",
126+
"'${_domains}'",
127+
"--dns-ovh-credentials ${letsencrypt::plugin::dns_ovh::config_dir}/dns-ovh.ini",
128+
"--dns-ovh-propagation-seconds ${letsencrypt::plugin::dns_ovh::propagation_seconds}",
129+
]
130+
}
131+
121132
default: {
122133
if $ensure == 'present' {
123134
$_domains = join($domains, '\' -d \'')

manifests/params.pp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,40 +22,47 @@
2222
$package_command = 'certbot'
2323
$config_dir = '/etc/letsencrypt'
2424
$dns_rfc2136_package_name = 'python3-certbot-dns-rfc2136'
25+
$dns_ovh_package_name = 'python3-certbot-dns-ovh'
2526
} elsif $facts['osfamily'] == 'RedHat' {
2627
$install_method = 'package'
2728
$package_name = 'certbot'
2829
$package_command = 'certbot'
2930
$config_dir = '/etc/letsencrypt'
3031
if $facts['operatingsystemmajrelease'] == '7' {
3132
$dns_rfc2136_package_name = 'python2-certbot-dns-rfc2136'
33+
$dns_ovh_package_name = 'python2-certbot-dns-ovh'
3234
} else {
3335
$dns_rfc2136_package_name = 'python3-certbot-dns-rfc2136'
36+
$dns_ovh_package_name = 'python3-certbot-dns-ovh'
3437
}
3538
} elsif $facts['osfamily'] == 'Gentoo' {
3639
$install_method = 'package'
3740
$package_name = 'app-crypt/certbot'
3841
$package_command = 'certbot'
3942
$config_dir = '/etc/letsencrypt'
4043
$dns_rfc2136_package_name = undef
44+
$dns_ovh_package_name = undef
4145
} elsif $facts['osfamily'] == 'OpenBSD' {
4246
$install_method = 'package'
4347
$package_name = 'certbot'
4448
$package_command = 'certbot'
4549
$config_dir = '/etc/letsencrypt'
4650
$dns_rfc2136_package_name = undef
51+
$dns_ovh_package_name = undef
4752
} elsif $facts['osfamily'] == 'FreeBSD' {
4853
$install_method = 'package'
4954
$package_name = 'py27-certbot'
5055
$package_command = 'certbot'
5156
$config_dir = '/usr/local/etc/letsencrypt'
5257
$dns_rfc2136_package_name = undef
58+
$dns_ovh_package_name = undef
5359
} else {
5460
$install_method = 'vcs'
5561
$package_name = 'letsencrypt'
5662
$package_command = 'letsencrypt'
5763
$config_dir = '/etc/letsencrypt'
5864
$dns_rfc2136_package_name = undef
65+
$dns_ovh_package_name = undef
5966
}
6067

6168
$config_file = "${config_dir}/cli.ini"
@@ -82,4 +89,7 @@
8289
$dns_rfc2136_algorithm = 'HMAC-SHA512'
8390
$dns_rfc2136_propagation_seconds = 10
8491

92+
$dns_ovh_manage_package = true
93+
$dns_ovh_propagation_seconds = 30
94+
8595
}

manifests/plugin/dns_ovh.pp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# == Class: letsencrypt::plugin::dns_ovh
2+
#
3+
# This class installs and configures the Let's Encrypt dns-ovh plugin.
4+
# https://certbot-dns-ovh.readthedocs.io
5+
#
6+
# === Parameters:
7+
#
8+
# [*endpoint*]
9+
# Target OVH DNS endpoint.
10+
# [*application_key*]
11+
# OVH application key.
12+
# [*application_secret*]
13+
# DNS OVH application secret.
14+
# [*consumer_key*]
15+
# DNS OVH consumer key.
16+
# [*manage_package*]
17+
# Manage the plugin package.
18+
# [*package_name*]
19+
# The name of the package to install when $manage_package is true.
20+
# [*config_dir*]
21+
# The path to the configuration directory.
22+
#
23+
class letsencrypt::plugin::dns_ovh (
24+
Enum['ovh-eu', 'ovh-ca'] $endpoint,
25+
String[1] $application_key,
26+
String[1] $application_secret,
27+
String[1] $consumer_key,
28+
Integer $propagation_seconds = $letsencrypt::dns_ovh_propagation_seconds,
29+
Stdlib::Absolutepath $config_dir = $letsencrypt::config_dir,
30+
Boolean $manage_package = $letsencrypt::dns_ovh_manage_package,
31+
String $package_name = $letsencrypt::dns_ovh_package_name,
32+
) {
33+
34+
if $manage_package {
35+
package { $package_name:
36+
ensure => installed,
37+
}
38+
}
39+
40+
$ini_vars = {
41+
dns_ovh_endpoint => $endpoint,
42+
dns_ovh_application_key => $application_key,
43+
dns_ovh_application_secret => $application_secret,
44+
dns_ovh_consumer_key => $consumer_key,
45+
dns_ovh_propagation_seconds => $propagation_seconds,
46+
}
47+
48+
file { "${config_dir}/dns-ovh.ini":
49+
ensure => file,
50+
owner => 'root',
51+
group => 'root',
52+
mode => '0400',
53+
content => epp('letsencrypt/ini.epp', {
54+
vars => { '' => $ini_vars },
55+
}),
56+
require => Class['letsencrypt'],
57+
}
58+
59+
}

types/plugin.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
type Letsencrypt::Plugin = Enum['apache', 'standalone', 'webroot', 'nginx', 'dns-route53', 'dns-google', 'dns-cloudflare', 'dns-rfc2136']
1+
type Letsencrypt::Plugin = Enum['apache', 'standalone', 'webroot', 'nginx', 'dns-route53', 'dns-google', 'dns-cloudflare', 'dns-rfc2136', 'dns-ovh']

0 commit comments

Comments
 (0)