define nginx::site( $ensure = present, $ssl = present, $source = 'template', $certbot = true, $template = 'site', $backend = 'weblocal', $aliases = "*.${name}", $cache = false, $cache_levels = '1:2', $cache_size = '10m', $cache_inactive = '600s', $cache_max_size = '1m', $x_frame_options = 'DENY', ) { nginx::site::config { $name: ensure => $ensure, source => $source, template => $template, backend => $backend, aliases => $aliases, } # We should discover the best practices' way to # stop managing a certificate using certbot so # we can implement an ensurable properly. if $certbot == true and $ensure == 'present' { certbot::manage { $name: aliases => $aliases, pre_hook => '/usr/sbin/service nginx restart', require => Nginx::Site::Config[$name], } } nginx::site::config { "${name}-ssl": server_name => $name, ensure => $ensure ? { 'present' => $ssl, default => absent, }, source => $source, template => "${template}-ssl", backend => $backend, aliases => $aliases, cache => $cache, cache_levels => $cache_levels, cache_size => $cache_size, cache_inactive => $cache_inactive, cache_max_size => $cache_max_size, x_frame_options => $x_frame_options, require => $certbot ? { true => $ensure ? { 'present' => Certbot::Manage[$name], default => undef, }, default => undef, } } }