Puppet Class: unbound

Inherits:
::unbound::params
Defined in:
manifests/init.pp

Overview

Installs and configures Unbound.

Examples:

Configure Unbound listening on all interfaces

include ::unbound

Update the above example to specify the forwarders to use and allow access from the local network

class { '::unbound':
  access_control => [
    ["${::network}/${netmask_to_masklen($::netmask)}", 'allow'],
    ["${::network6}/${netmask_to_masklen($::netmask6)}", 'allow'],
  ],
}

::unbound::forward { '.':
  forward_addr => [
    '8.8.8.8',
    '8.8.4.4',
    '2001:4860:4860::8844',
    '2001:4860:4860::8888',
  ],
}

Parameters:

  • conf_dir (Stdlib::Absolutepath) (defaults to: $::unbound::params::conf_dir)
  • enable_dns64 (Boolean) (defaults to: false)
  • enable_dnssec (Boolean) (defaults to: true)
  • enable_ecs (Boolean) (defaults to: false)
  • enable_ipsec (Boolean) (defaults to: false)
  • group (String) (defaults to: $::unbound::params::group)
  • manage_control (Boolean) (defaults to: true)
  • manage_package (Boolean) (defaults to: $::unbound::params::manage_package)
  • package_name (Optional[String]) (defaults to: $::unbound::params::package_name)
  • service_name (String) (defaults to: 'unbound')
  • access_control (Optional[Array[Tuple[IP::Address, Unbound::ACL::Action], 1]]) (defaults to: undef)
  • access_control_tag (Optional[Array[Tuple[IP::Address, Array[String, 1]], 1]]) (defaults to: undef)
  • access_control_tag_action (Optional[Array[Tuple[IP::Address, String, Unbound::ACL::Action], 1]]) (defaults to: undef)
  • access_control_tag_data (Optional[Array[Tuple[IP::Address, String, Unbound::Record], 1]]) (defaults to: undef)
  • access_control_view (Optional[Array[Tuple[IP::Address, String], 1]]) (defaults to: undef)
  • add_holddown (Optional[Integer[0]]) (defaults to: undef)
  • auto_trust_anchor_file (Optional[Stdlib::Absolutepath]) (defaults to: $::unbound::params::auto_trust_anchor_file)
  • cache_max_negative_ttl (Optional[Integer[0]]) (defaults to: undef)
  • cache_max_ttl (Optional[Integer[0]]) (defaults to: undef)
  • cache_min_ttl (Optional[Integer[0]]) (defaults to: undef)
  • caps_whitelist (Optional[Array[Bodgitlib::Zone::NonRoot, 1]]) (defaults to: undef)
  • chroot (Optional[Stdlib::Absolutepath]) (defaults to: $::unbound::params::chroot)
  • client_subnet_always_forward (Optional[Boolean]) (defaults to: undef)
  • client_subnet_zone (Optional[Array[Bodgitlib::Zone::NonRoot, 1]]) (defaults to: undef)
  • control_cert_file (Optional[Stdlib::Absolutepath]) (defaults to: $::unbound::params::control_cert_file)
  • control_enable (Optional[Boolean]) (defaults to: true)
  • control_interface (Optional[Array[Variant[IP::Address::NoSubnet, Stdlib::Absolutepath], 1]]) (defaults to: undef)
  • control_key_file (Optional[Stdlib::Absolutepath]) (defaults to: $::unbound::params::control_key_file)
  • control_port (Optional[Bodgitlib::Port]) (defaults to: undef)
  • control_use_cert (Optional[Boolean]) (defaults to: undef)
  • define_tag (Optional[Array[String, 1]]) (defaults to: undef)
  • del_holddown (Optional[Integer[0]]) (defaults to: undef)
  • delay_close (Optional[Integer[0]]) (defaults to: undef)
  • directory (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • disable_dnssec_lame_check (Optional[Boolean]) (defaults to: undef)
  • dns64_prefix (Optional[IP::Address::V6]) (defaults to: undef)
  • dns64_synthall (Optional[Boolean]) (defaults to: undef)
  • dnscrypt_enable (Optional[Boolean]) (defaults to: undef)
  • dnscrypt_port (Optional[Bodgitlib::Port]) (defaults to: undef)
  • dnscrypt_provider (Optional[Bodgitlib::Zone::NonRoot]) (defaults to: undef)
  • dnscrypt_provider_cert (Optional[Array[Stdlib::Absolutepath, 1]]) (defaults to: undef)
  • dnscrypt_secret_key (Optional[Array[Stdlib::Absolutepath, 1]]) (defaults to: undef)
  • do_daemonize (Optional[Boolean]) (defaults to: undef)
  • do_ip4 (Optional[Boolean]) (defaults to: undef)
  • do_ip6 (Optional[Boolean]) (defaults to: undef)
  • do_not_query_address (Optional[Array[IP::Address, 1]]) (defaults to: undef)
  • do_not_query_localhost (Optional[Boolean]) (defaults to: undef)
  • do_tcp (Optional[Boolean]) (defaults to: undef)
  • do_udp (Optional[Boolean]) (defaults to: undef)
  • domain_insecure (Optional[Array[Bodgitlib::Zone::NonRoot, 1]]) (defaults to: undef)
  • edns_buffer_size (Optional[Integer[0]]) (defaults to: undef)
  • extended_statistics (Optional[Boolean]) (defaults to: undef)
  • harden_algo_downgrade (Optional[Boolean]) (defaults to: undef)
  • harden_below_nxdomain (Optional[Boolean]) (defaults to: undef)
  • harden_dnssec_stripped (Optional[Boolean]) (defaults to: undef)
  • harden_glue (Optional[Boolean]) (defaults to: undef)
  • harden_large_queries (Optional[Boolean]) (defaults to: undef)
  • harden_referral_path (Optional[Boolean]) (defaults to: undef)
  • harden_short_bufsize (Optional[Boolean]) (defaults to: undef)
  • hide_identity (Optional[Boolean]) (defaults to: undef)
  • hide_trustanchor (Optional[Boolean]) (defaults to: undef)
  • hide_version (Optional[Boolean]) (defaults to: undef)
  • identity (Optional[String]) (defaults to: undef)
  • ignore_cd_flag (Optional[Boolean]) (defaults to: undef)
  • incoming_num_tcp (Optional[Integer[0]]) (defaults to: undef)
  • infra_host_ttl (Optional[Integer[0]]) (defaults to: undef)
  • infra_cache_min_rtt (Optional[Integer[0]]) (defaults to: undef)
  • infra_cache_numhosts (Optional[Integer[0]]) (defaults to: undef)
  • infra_cache_slabs (Optional[Integer[1]]) (defaults to: undef)
  • insecure_lan_zones (Optional[Boolean]) (defaults to: undef)
  • interface (Optional[Array[Unbound::Interface::Incoming, 1]]) (defaults to: undef)
  • interface_automatic (Optional[Boolean]) (defaults to: undef)
  • ip_freebind (Optional[Boolean]) (defaults to: undef)
  • ip_ratelimit (Optional[Integer[0]]) (defaults to: undef)
  • ip_ratelimit_factor (Optional[Integer[0]]) (defaults to: undef)
  • ip_ratelimit_size (Optional[Unbound::Size]) (defaults to: undef)
  • ip_ratelimit_slabs (Optional[Integer[1]]) (defaults to: undef)
  • ip_transparent (Optional[Boolean]) (defaults to: undef)
  • ipsecmod_enabled (Optional[Boolean]) (defaults to: undef)
  • ipsecmod_hook (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • ipsecmod_ignore_bogus (Optional[Boolean]) (defaults to: undef)
  • ipsecmod_max_ttl (Optional[Integer[0]]) (defaults to: undef)
  • ipsecmod_strict (Optional[Boolean]) (defaults to: undef)
  • ipsecmod_whitelist (Optional[Array[Bodgitlib::Zone::NonRoot, 1]]) (defaults to: undef)
  • jostle_timeout (Optional[Integer[0]]) (defaults to: undef)
  • keep_missing (Optional[Integer[0]]) (defaults to: undef)
  • key_cache_size (Optional[Unbound::Size]) (defaults to: undef)
  • key_cache_slabs (Optional[Integer[1]]) (defaults to: undef)
  • local_data (Optional[Array[Unbound::Record, 1]]) (defaults to: undef)
  • local_data_ptr (Optional[Array[Unbound::Record::PTR, 1]]) (defaults to: undef)
  • local_zone (Optional[Array[Tuple[Bodgitlib::Zone::NonRoot, Unbound::Type], 1]]) (defaults to: undef)
  • local_zone_override (Optional[Array[Tuple[Bodgitlib::Zone::NonRoot, IP::Address, Unbound::Type], 1]]) (defaults to: undef)
  • local_zone_tag (Optional[Array[Tuple[Bodgitlib::Zone::NonRoot, Array[String, 1]], 1]]) (defaults to: undef)
  • log_identity (Optional[String]) (defaults to: undef)
  • log_queries (Optional[Boolean]) (defaults to: undef)
  • log_replies (Optional[Boolean]) (defaults to: undef)
  • log_time_ascii (Optional[Boolean]) (defaults to: undef)
  • logfile (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • max_client_subnet_ipv4 (Optional[Integer[0, 32]]) (defaults to: undef)
  • max_client_subnet_ipv6 (Optional[Integer[0, 128]]) (defaults to: undef)
  • max_udp_size (Optional[Integer[0, 65536]]) (defaults to: undef)
  • minimal_responses (Optional[Boolean]) (defaults to: undef)
  • msg_buffer_size (Optional[Integer[0, 65552]]) (defaults to: undef)
  • msg_cache_size (Optional[Unbound::Size]) (defaults to: undef)
  • msg_cache_slabs (Optional[Integer[1]]) (defaults to: undef)
  • neg_cache_size (Optional[Unbound::Size]) (defaults to: undef)
  • num_queries_per_thread (Optional[Integer[0]]) (defaults to: undef)
  • num_threads (Optional[Integer[1]]) (defaults to: undef)
  • outgoing_interface (Optional[Array[Unbound::Interface::Outgoing, 1]]) (defaults to: undef)
  • outgoing_num_tcp (Optional[Integer[0]]) (defaults to: undef)
  • outgoing_port (Optional[Array[Unbound::Port, 1]]) (defaults to: undef)
  • outgoing_range (Optional[Integer[1, 65535]]) (defaults to: undef)
  • outgoing_tcp_mss (Optional[Integer[0]]) (defaults to: undef)
  • permit_small_holddown (Optional[Boolean]) (defaults to: undef)
  • pidfile (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • port (Optional[Bodgitlib::Port]) (defaults to: undef)
  • prefer_ip6 (Optional[Boolean]) (defaults to: undef)
  • prefetch (Optional[Boolean]) (defaults to: undef)
  • prefetch_key (Optional[Boolean]) (defaults to: undef)
  • private_address (Optional[Array[IP::Address, 1]]) (defaults to: undef)
  • private_domain (Optional[Array[Bodgitlib::Zone::NonRoot, 1]]) (defaults to: undef)
  • qname_minimisation (Optional[Boolean]) (defaults to: undef)
  • qname_minimisation_strict (Optional[Boolean]) (defaults to: undef)
  • ratelimit (Optional[Integer[0]]) (defaults to: undef)
  • ratelimit_below_domain (Optional[Array[Unbound::RateLimit, 1]]) (defaults to: undef)
  • ratelimit_factor (Optional[Integer[0]]) (defaults to: undef)
  • ratelimit_for_domain (Optional[Array[Unbound::RateLimit, 1]]) (defaults to: undef)
  • ratelimit_size (Optional[Unbound::Size]) (defaults to: undef)
  • ratelimit_slabs (Optional[Integer[1]]) (defaults to: undef)
  • root_hints (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • rrset_cache_size (Optional[Unbound::Size]) (defaults to: undef)
  • rrset_cache_slabs (Optional[Integer[1]]) (defaults to: undef)
  • rrset_roundrobin (Optional[Boolean]) (defaults to: undef)
  • send_client_subnet (Optional[Array[IP::Address, 1]]) (defaults to: undef)
  • serve_expired (Optional[Boolean]) (defaults to: undef)
  • server_cert_file (Optional[Stdlib::Absolutepath]) (defaults to: $::unbound::params::server_cert_file)
  • server_key_file (Optional[Stdlib::Absolutepath]) (defaults to: $::unbound::params::server_key_file)
  • so_rcvbuf (Optional[Unbound::Size]) (defaults to: undef)
  • so_reuseport (Optional[Boolean]) (defaults to: undef)
  • so_sndbuf (Optional[Unbound::Size]) (defaults to: undef)
  • ssl_port (Optional[Bodgitlib::Port]) (defaults to: undef)
  • ssl_service_key (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • ssl_service_pem (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • ssl_upstream (Optional[Boolean]) (defaults to: undef)
  • statistics_cumulative (Optional[Boolean]) (defaults to: undef)
  • statistics_interval (Optional[Integer[0]]) (defaults to: undef)
  • target_fetch_policy (Optional[Tuple[Integer[-1], 5]]) (defaults to: undef)
  • tcp_mss (Optional[Integer[0]]) (defaults to: undef)
  • tcp_upstream (Optional[Boolean]) (defaults to: undef)
  • trust_anchor (Optional[Array[String, 1]]) (defaults to: undef)
  • trust_anchor_file (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • trust_anchor_signaling (Optional[Boolean]) (defaults to: undef)
  • unblock_lan_zones (Optional[Boolean]) (defaults to: undef)
  • unwanted_reply_threshold (Optional[Integer[0]]) (defaults to: undef)
  • use_caps_for_id (Optional[Boolean]) (defaults to: undef)
  • use_syslog (Optional[Boolean]) (defaults to: undef)
  • use_systemd (Optional[Boolean]) (defaults to: undef)
  • username (Optional[String]) (defaults to: $::unbound::params::username)
  • val_bogus_ttl (Optional[Integer[0]]) (defaults to: undef)
  • val_clean_additional (Optional[Boolean]) (defaults to: undef)
  • val_log_level (Optional[Integer[0, 2]]) (defaults to: undef)
  • val_nsec3_keysize_iterations (Optional[Array[Tuple[Integer[0], 2], 1]]) (defaults to: undef)
  • val_override_date (Optional[String]) (defaults to: undef)
  • val_permissive_mode (Optional[Boolean]) (defaults to: undef)
  • val_sig_skew_max (Optional[Integer[0]]) (defaults to: undef)
  • val_sig_skew_min (Optional[Integer[0]]) (defaults to: undef)
  • verbosity (Optional[Integer[0, 5]]) (defaults to: undef)
  • version (Optional[String]) (defaults to: undef)

See Also:



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
# File 'manifests/init.pp', line 195

class unbound (
  Stdlib::Absolutepath                                                            $conf_dir                     = $::unbound::params::conf_dir,
  Boolean                                                                         $enable_dns64                 = false,
  Boolean                                                                         $enable_dnssec                = true,
  Boolean                                                                         $enable_ecs                   = false,
  Boolean                                                                         $enable_ipsec                 = false,
  String                                                                          $group                        = $::unbound::params::group,
  Boolean                                                                         $manage_control               = true,
  Boolean                                                                         $manage_package               = $::unbound::params::manage_package,
  Optional[String]                                                                $package_name                 = $::unbound::params::package_name,
  String                                                                          $service_name                 = 'unbound',
  # Below map to global configuration parameters
  Optional[Array[Tuple[IP::Address, Unbound::ACL::Action], 1]]                    $access_control               = undef,
  Optional[Array[Tuple[IP::Address, Array[String, 1]], 1]]                        $access_control_tag           = undef,
  Optional[Array[Tuple[IP::Address, String, Unbound::ACL::Action], 1]]            $access_control_tag_action    = undef,
  Optional[Array[Tuple[IP::Address, String, Unbound::Record], 1]]                 $access_control_tag_data      = undef,
  Optional[Array[Tuple[IP::Address, String], 1]]                                  $access_control_view          = undef,
  Optional[Integer[0]]                                                            $add_holddown                 = undef,
  Optional[Stdlib::Absolutepath]                                                  $auto_trust_anchor_file       = $::unbound::params::auto_trust_anchor_file,
  Optional[Integer[0]]                                                            $cache_max_negative_ttl       = undef,
  Optional[Integer[0]]                                                            $cache_max_ttl                = undef,
  Optional[Integer[0]]                                                            $cache_min_ttl                = undef,
  Optional[Array[Bodgitlib::Zone::NonRoot, 1]]                                    $caps_whitelist               = undef,
  Optional[Stdlib::Absolutepath]                                                  $chroot                       = $::unbound::params::chroot,
  Optional[Boolean]                                                               $client_subnet_always_forward = undef,
  Optional[Array[Bodgitlib::Zone::NonRoot, 1]]                                    $client_subnet_zone           = undef,
  Optional[Stdlib::Absolutepath]                                                  $control_cert_file            = $::unbound::params::control_cert_file,
  Optional[Boolean]                                                               $control_enable               = true,
  Optional[Array[Variant[IP::Address::NoSubnet, Stdlib::Absolutepath], 1]]        $control_interface            = undef,
  Optional[Stdlib::Absolutepath]                                                  $control_key_file             = $::unbound::params::control_key_file,
  Optional[Bodgitlib::Port]                                                       $control_port                 = undef,
  Optional[Boolean]                                                               $control_use_cert             = undef,
  Optional[Array[String, 1]]                                                      $define_tag                   = undef,
  Optional[Integer[0]]                                                            $del_holddown                 = undef,
  Optional[Integer[0]]                                                            $delay_close                  = undef,
  Optional[Stdlib::Absolutepath]                                                  $directory                    = undef,
  Optional[Boolean]                                                               $disable_dnssec_lame_check    = undef,
  Optional[IP::Address::V6]                                                       $dns64_prefix                 = undef,
  Optional[Boolean]                                                               $dns64_synthall               = undef,
  Optional[Boolean]                                                               $dnscrypt_enable              = undef,
  Optional[Bodgitlib::Port]                                                       $dnscrypt_port                = undef,
  Optional[Bodgitlib::Zone::NonRoot]                                              $dnscrypt_provider            = undef,
  Optional[Array[Stdlib::Absolutepath, 1]]                                        $dnscrypt_provider_cert       = undef,
  Optional[Array[Stdlib::Absolutepath, 1]]                                        $dnscrypt_secret_key          = undef,
  Optional[Boolean]                                                               $do_daemonize                 = undef,
  Optional[Boolean]                                                               $do_ip4                       = undef,
  Optional[Boolean]                                                               $do_ip6                       = undef,
  Optional[Array[IP::Address, 1]]                                                 $do_not_query_address         = undef,
  Optional[Boolean]                                                               $do_not_query_localhost       = undef,
  Optional[Boolean]                                                               $do_tcp                       = undef,
  Optional[Boolean]                                                               $do_udp                       = undef,
  Optional[Array[Bodgitlib::Zone::NonRoot, 1]]                                    $domain_insecure              = undef,
  Optional[Integer[0]]                                                            $edns_buffer_size             = undef,
  Optional[Boolean]                                                               $extended_statistics          = undef,
  Optional[Boolean]                                                               $harden_algo_downgrade        = undef,
  Optional[Boolean]                                                               $harden_below_nxdomain        = undef,
  Optional[Boolean]                                                               $harden_dnssec_stripped       = undef,
  Optional[Boolean]                                                               $harden_glue                  = undef,
  Optional[Boolean]                                                               $harden_large_queries         = undef,
  Optional[Boolean]                                                               $harden_referral_path         = undef,
  Optional[Boolean]                                                               $harden_short_bufsize         = undef,
  Optional[Boolean]                                                               $hide_identity                = undef,
  Optional[Boolean]                                                               $hide_trustanchor             = undef,
  Optional[Boolean]                                                               $hide_version                 = undef,
  Optional[String]                                                                $identity                     = undef,
  Optional[Boolean]                                                               $ignore_cd_flag               = undef,
  Optional[Integer[0]]                                                            $incoming_num_tcp             = undef,
  Optional[Integer[0]]                                                            $infra_host_ttl               = undef,
  Optional[Integer[0]]                                                            $infra_cache_min_rtt          = undef,
  Optional[Integer[0]]                                                            $infra_cache_numhosts         = undef,
  Optional[Integer[1]]                                                            $infra_cache_slabs            = undef,
  Optional[Boolean]                                                               $insecure_lan_zones           = undef,
  Optional[Array[Unbound::Interface::Incoming, 1]]                                $interface                    = undef,
  Optional[Boolean]                                                               $interface_automatic          = undef,
  Optional[Boolean]                                                               $ip_freebind                  = undef,
  Optional[Integer[0]]                                                            $ip_ratelimit                 = undef,
  Optional[Integer[0]]                                                            $ip_ratelimit_factor          = undef,
  Optional[Unbound::Size]                                                         $ip_ratelimit_size            = undef,
  Optional[Integer[1]]                                                            $ip_ratelimit_slabs           = undef,
  Optional[Boolean]                                                               $ip_transparent               = undef,
  Optional[Boolean]                                                               $ipsecmod_enabled             = undef,
  Optional[Stdlib::Absolutepath]                                                  $ipsecmod_hook                = undef,
  Optional[Boolean]                                                               $ipsecmod_ignore_bogus        = undef,
  Optional[Integer[0]]                                                            $ipsecmod_max_ttl             = undef,
  Optional[Boolean]                                                               $ipsecmod_strict              = undef,
  Optional[Array[Bodgitlib::Zone::NonRoot, 1]]                                    $ipsecmod_whitelist           = undef,
  Optional[Integer[0]]                                                            $jostle_timeout               = undef,
  Optional[Integer[0]]                                                            $keep_missing                 = undef,
  Optional[Unbound::Size]                                                         $key_cache_size               = undef,
  Optional[Integer[1]]                                                            $key_cache_slabs              = undef,
  Optional[Array[Unbound::Record, 1]]                                             $local_data                   = undef,
  Optional[Array[Unbound::Record::PTR, 1]]                                        $local_data_ptr               = undef,
  Optional[Array[Tuple[Bodgitlib::Zone::NonRoot, Unbound::Type], 1]]              $local_zone                   = undef,
  Optional[Array[Tuple[Bodgitlib::Zone::NonRoot, IP::Address, Unbound::Type], 1]] $local_zone_override          = undef,
  Optional[Array[Tuple[Bodgitlib::Zone::NonRoot, Array[String, 1]], 1]]           $local_zone_tag               = undef,
  Optional[String]                                                                $log_identity                 = undef,
  Optional[Boolean]                                                               $log_queries                  = undef,
  Optional[Boolean]                                                               $log_replies                  = undef,
  Optional[Boolean]                                                               $log_time_ascii               = undef,
  Optional[Stdlib::Absolutepath]                                                  $logfile                      = undef,
  Optional[Integer[0, 32]]                                                        $max_client_subnet_ipv4       = undef,
  Optional[Integer[0, 128]]                                                       $max_client_subnet_ipv6       = undef,
  Optional[Integer[0, 65536]]                                                     $max_udp_size                 = undef,
  Optional[Boolean]                                                               $minimal_responses            = undef,
  Optional[Integer[0, 65552]]                                                     $msg_buffer_size              = undef,
  Optional[Unbound::Size]                                                         $msg_cache_size               = undef,
  Optional[Integer[1]]                                                            $msg_cache_slabs              = undef,
  Optional[Unbound::Size]                                                         $neg_cache_size               = undef,
  Optional[Integer[0]]                                                            $num_queries_per_thread       = undef,
  Optional[Integer[1]]                                                            $num_threads                  = undef,
  Optional[Array[Unbound::Interface::Outgoing, 1]]                                $outgoing_interface           = undef,
  Optional[Integer[0]]                                                            $outgoing_num_tcp             = undef,
  Optional[Array[Unbound::Port, 1]]                                               $outgoing_port                = undef,
  Optional[Integer[1, 65535]]                                                     $outgoing_range               = undef,
  Optional[Integer[0]]                                                            $outgoing_tcp_mss             = undef,
  Optional[Boolean]                                                               $permit_small_holddown        = undef,
  Optional[Stdlib::Absolutepath]                                                  $pidfile                      = undef,
  Optional[Bodgitlib::Port]                                                       $port                         = undef,
  Optional[Boolean]                                                               $prefer_ip6                   = undef,
  Optional[Boolean]                                                               $prefetch                     = undef,
  Optional[Boolean]                                                               $prefetch_key                 = undef,
  Optional[Array[IP::Address, 1]]                                                 $private_address              = undef,
  Optional[Array[Bodgitlib::Zone::NonRoot, 1]]                                    $private_domain               = undef,
  Optional[Boolean]                                                               $qname_minimisation           = undef,
  Optional[Boolean]                                                               $qname_minimisation_strict    = undef,
  Optional[Integer[0]]                                                            $ratelimit                    = undef,
  Optional[Array[Unbound::RateLimit, 1]]                                          $ratelimit_below_domain       = undef,
  Optional[Integer[0]]                                                            $ratelimit_factor             = undef,
  Optional[Array[Unbound::RateLimit, 1]]                                          $ratelimit_for_domain         = undef,
  Optional[Unbound::Size]                                                         $ratelimit_size               = undef,
  Optional[Integer[1]]                                                            $ratelimit_slabs              = undef,
  Optional[Stdlib::Absolutepath]                                                  $root_hints                   = undef,
  Optional[Unbound::Size]                                                         $rrset_cache_size             = undef,
  Optional[Integer[1]]                                                            $rrset_cache_slabs            = undef,
  Optional[Boolean]                                                               $rrset_roundrobin             = undef,
  Optional[Array[IP::Address, 1]]                                                 $send_client_subnet           = undef,
  Optional[Boolean]                                                               $serve_expired                = undef,
  Optional[Stdlib::Absolutepath]                                                  $server_cert_file             = $::unbound::params::server_cert_file,
  Optional[Stdlib::Absolutepath]                                                  $server_key_file              = $::unbound::params::server_key_file,
  Optional[Unbound::Size]                                                         $so_rcvbuf                    = undef,
  Optional[Boolean]                                                               $so_reuseport                 = undef,
  Optional[Unbound::Size]                                                         $so_sndbuf                    = undef,
  Optional[Bodgitlib::Port]                                                       $ssl_port                     = undef,
  Optional[Stdlib::Absolutepath]                                                  $ssl_service_key              = undef,
  Optional[Stdlib::Absolutepath]                                                  $ssl_service_pem              = undef,
  Optional[Boolean]                                                               $ssl_upstream                 = undef,
  Optional[Boolean]                                                               $statistics_cumulative        = undef,
  Optional[Integer[0]]                                                            $statistics_interval          = undef,
  Optional[Tuple[Integer[-1], 5]]                                                 $target_fetch_policy          = undef,
  Optional[Integer[0]]                                                            $tcp_mss                      = undef,
  Optional[Boolean]                                                               $tcp_upstream                 = undef,
  Optional[Array[String, 1]]                                                      $trust_anchor                 = undef,
  Optional[Stdlib::Absolutepath]                                                  $trust_anchor_file            = undef,
  Optional[Boolean]                                                               $trust_anchor_signaling       = undef,
  Optional[Boolean]                                                               $unblock_lan_zones            = undef,
  Optional[Integer[0]]                                                            $unwanted_reply_threshold     = undef,
  Optional[Boolean]                                                               $use_caps_for_id              = undef,
  Optional[Boolean]                                                               $use_syslog                   = undef,
  Optional[Boolean]                                                               $use_systemd                  = undef,
  Optional[String]                                                                $username                     = $::unbound::params::username,
  Optional[Integer[0]]                                                            $val_bogus_ttl                = undef,
  Optional[Boolean]                                                               $val_clean_additional         = undef,
  Optional[Integer[0, 2]]                                                         $val_log_level                = undef,
  Optional[Array[Tuple[Integer[0], 2], 1]]                                        $val_nsec3_keysize_iterations = undef,
  Optional[String]                                                                $val_override_date            = undef,
  Optional[Boolean]                                                               $val_permissive_mode          = undef,
  Optional[Integer[0]]                                                            $val_sig_skew_max             = undef,
  Optional[Integer[0]]                                                            $val_sig_skew_min             = undef,
  Optional[Integer[0, 5]]                                                         $verbosity                    = undef,
  Optional[String]                                                                $version                      = undef,
) inherits ::unbound::params {

  if $manage_control and ($control_cert_file != $::unbound::params::control_cert_file or $control_key_file != $::unbound::params::control_key_file or $server_cert_file != $::unbound::params::server_cert_file or $server_key_file != $::unbound::params::server_key_file) {
    fail('Cannot have $manage_control enabled with non-standard locations for remote control keys and/or certificates')
  }

  contain ::unbound::install
  contain ::unbound::config
  contain ::unbound::service

  Class['::unbound::install'] ~> Class['::unbound::config']
    ~> Class['::unbound::service']
}