class profiles::letsencrypt ( String $certname, Array[String] $domains, Enum['nginx','apache'] $provider, Optional[String] $nginx_plugin = undef, Optional[String] $apache_plugin = undef, ) { include ::letsencrypt $plugin = $provider $post_hook = $provider ? { 'nginx' => 'systemctl restart nginx.service', 'apache' => 'systemctl restart apache2.service', } case $provider { 'apache': { ensure_packages ([$apache_plugin]) } 'nginx': { ensure_packages ([$nginx_plugin]) } } letsencrypt::certonly { $certname: ensure => present, domains => $domains, manage_cron => true, plugin => $plugin, additional_args => [ '--quiet', ], # pre_hook_commands => [ 'systemctl stop nginx.service', ], post_hook_commands => [ $post_hook, ], } }