{"id":15510962,"url":"https://github.com/ghoneycutt/puppet-module-bind","last_synced_at":"2025-08-16T21:13:48.537Z","repository":{"id":137789700,"uuid":"59755376","full_name":"ghoneycutt/puppet-module-bind","owner":"ghoneycutt","description":"Puppet module to manage bind","archived":false,"fork":false,"pushed_at":"2017-11-22T21:34:42.000Z","size":106,"stargazers_count":1,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T00:44:22.612Z","etag":null,"topics":["bind","bind9","dns","puppet","puppet-module"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ghoneycutt.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-26T14:07:57.000Z","updated_at":"2018-02-24T01:05:58.000Z","dependencies_parsed_at":"2023-05-22T14:00:29.653Z","dependency_job_id":null,"html_url":"https://github.com/ghoneycutt/puppet-module-bind","commit_stats":{"total_commits":61,"total_committers":6,"mean_commits":"10.166666666666666","dds":0.3278688524590164,"last_synced_commit":"6ab1313477ec55aa959d1ebf6d4c08d678d76bd8"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ghoneycutt/puppet-module-bind","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghoneycutt%2Fpuppet-module-bind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghoneycutt%2Fpuppet-module-bind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghoneycutt%2Fpuppet-module-bind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghoneycutt%2Fpuppet-module-bind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ghoneycutt","download_url":"https://codeload.github.com/ghoneycutt/puppet-module-bind/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghoneycutt%2Fpuppet-module-bind/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270771622,"owners_count":24642342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bind","bind9","dns","puppet","puppet-module"],"created_at":"2024-10-02T09:52:04.626Z","updated_at":"2025-08-16T21:13:48.503Z","avatar_url":"https://github.com/ghoneycutt.png","language":"Ruby","readme":"# puppet-module-bind\n\n#### Table of Contents\n\n1. [Module Description](#module-description)\n2. [Compatibility](#compatibility)\n3. [Class Descriptions](#class-descriptions)\n    * [bind](#class-bind)\n4. [Define Descriptions](#define-descriptions)\n    * [bind::acl](#defined-type-bindacl)\n    * [bind::channel](#defined-type-bindchannel)\n    * [bind::key](#defined-type-bindkey)\n    * [bind::masters](#defined-type-bindmasters)\n    * [bind::view](#defined-type-bindview)\n    * [bind::zone](#defined-type-bindzone)\n\n# Module description\n\nManage ISC Bind 9. This module's approach is to manage the configuration of\nbind9 while not managing the data in the actual zones, which is up to you.\nRecommend keeping zone data in another repo and having a process sync that data\nto your bind masters.\n\nSince the bind configuration language is so rich, the approach taken has\nbeen to turn clauses such as zone and view into defined types and make\nheavy use of concat fragments.\n\n# Compatibility\n\nThis module is built for use with Puppet v3 (with and without the future\nparser), v4 and v5 on the following platforms. See `.travis.yml` for an\nexact matrix of Puppet releases and ruby versions.\n\n * EL 6\n\n[![Build Status](https://travis-ci.org/ghoneycutt/puppet-module-bind.png?branch=master)](https://travis-ci.org/ghoneycutt/puppet-module-bind)\n\n# Class Descriptions\n## Class `bind`\n\n### Description\n\nThe bind class manages the software, its configuration and service. All\ndefined types can be called directly through the bind class by passing\ntheir options as hashes, which is explained for each type. To use,\nsimply `include ::bind`.\n\n### Parameters\n\n---\n#### package (type: String)\nPackage to be installed for ISC Bind 9.\n\n- *Default*: 'bind-chroot'\n\n---\n#### package_ensure (type: String)\nValue of ensure attribute for bind package.\n\n- *Default*: 'present'\n\n---\n#### config_path (type: String)\nAbsolute path to named.conf.\n\n- *Default*: '/etc/named.conf'\n\n---\n#### config_dir (type: String)\nAbsolute path to configuration directory.\n\n- *Default*: '/etc/named'\n\n---\n#### rndc_key (type: String)\nAbsolute path to RNDC key.\n\n- *Default*: '/etc/rndc.key'\n\n---\n#### rndc_key_secret (type: String)\nSecret for rndc_key.\n\n- *Default*: 'U803nlXs4b5x6t7UDw8hnw\n\n---\n#### service (type: String)\nName of bind service.\n\n- *Default*: 'named'\n\n---\n#### user (type: String)\nBind user.\n\n- *Default*: 'named'\n\n---\n#### group (type: String)\nBind group.\n\n- *Default*: 'named'\n\n---\n#### named_checkconf (type: String)\nAbsolute path to named-checkconf.\n\n- *Default*: '/usr/sbin/named-checkconf'\n\n---\n#### version (type: String)\nVersion to be announced. This is queryable, so recommend not using the actual\nversion.\n\n- *Default*: 'notsoeasy'\n\n---\n#### notify_option (type: String)\nValue of `notify` option in named.conf.\n\n- *Default*: 'no'\n\n---\n#### recursion (type: String)\nValue of `recursion` option in named.conf.\n\n- *Default*: 'no'\n\n---\n#### forwarders (type: Array)\nValue of `forwarders` option in named.conf. If you specify an array with\na single value of 'empty' it will generate an empty forwarders section.\n\n```\nforwarders {};\n```\n\n- *Default*: undef\n\n---\n#### zone_statistics (type: String)\nValue of `zone-statistics` option in named.conf.\n\n- *Default*: 'yes'\n\n---\n#### allow_query (type: String)\nValue of `allow-query` option in named.conf.\n\n- *Default*: 'any'\n\n---\n#### allow_transfer (type: String)\nValue of `allow-transfer` option in named.conf.\n\n- *Default*: 'none'\n\n---\n#### cleaning_interval (type: Integer)\nValue of `cleaning-interval` option in named.conf.\n\n- *Default*: 1440\n\n---\n#### check_names (type: String)\nValue used in `check-names` option in named.conf. The template will add the\ntype (master or slave) based on the `type` parameter. Valid values are 'fail',\n'ignore' and 'warn'.\n\n- *Default*: 'ignore'\n\n---\n#### port (type: Integer)\nValue used in `listen-on` option in named.conf.\n\n- *Default*: 53\n\n---\n#### listen_from (type: String)\nValue used in `listen-on` option in named.conf.\n\n- *Default*: 'any'\n\n---\n#### dnssec_enable (type: String)\nValue of `dnssec-enable` option in named.conf.\n\n- *Default*: 'no'\n\n---\n#### dnssec_validation (type: String)\nValue of `dnssec-validation` option in named.conf.\n\n- *Default*: 'no'\n\n---\n#### directory (type: String)\nValue of `directory` option in named.conf.\n\n- *Default*: '/var/named'\n\n---\n#### dump_file (type: String)\nValue of `dump-file` option in named.conf.\n\n- *Default*: '/var/named/data/cache_dump.db'\n\n---\n#### statistics_file (type: String)\nValue of `statistics-file` option in named.conf.\n\n- *Default*: '/var/named/data/named_stats.txt'\n\n---\n#### memstatistics_file (type: String)\nValue of `memstatistics-file` option in named.conf.\n\n- *Default*: '/var/named/data/named_mem_stats.txt'\n\n---\n#### type (type: String)\nType of bind system. Valid values are 'master' and 'slave'.\n\n- *Default*: 'master'\n\n---\n#### default_logging_channel (type: String)\nName of default logging channel to use. Valid values are 'default_syslog',\n'default_debug', 'default_stderr' and 'null'.\n\n- *Default*: 'default_syslog'\n\n---\n#### use_default_logging_channel (type: Boolean)\nDetermines if bind::channel should be called for the `default_logging_channel`.\n\n- *Default*: true\n\n---\n#### enable_logging_category_default (type: Boolean)\nDetermine if the logging category `default` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_default_channels (type: Array)\nList of channels for logging category `default`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_general (type: Boolean)\nDetermine if the logging category `general` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_general_channels (type: Array)\nList of channels for logging category `general`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_config (type: Boolean)\nDetermine if the logging category `config` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_config_channels (type: Array)\nList of channels for logging category `config`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_client (type: Boolean)\nDetermine if the logging category `client` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_client_channels (type: Array)\nList of channels for logging category `client`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_database (type: Boolean)\nDetermine if the logging category `database` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_database_channels (type: Array)\nList of channels for logging category `database`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_network (type: Boolean)\nDetermine if the logging category `network` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_network_channels (type: Array)\nList of channels for logging category `network`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_notify (type: Boolean)\nDetermine if the logging category `notify` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_notify_channels (type: Array)\nList of channels for logging category `notify`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_queries (type: Boolean)\nDetermine if the logging category `queries` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_queries_channels (type: Array)\nList of channels for logging category `queries`.\n\n- *Default*: ['default_syslog']\n\n---\n####enable_logging_category_security (type: Boolean)\nDetermine if the logging category `security` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_security_channels (type: Array)\nList of channels for logging category `security`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_resolver (type: Boolean)\nDetermine if the logging category `resolver` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_resolver_channels (type: Array)\nList of channels for logging category `resolver`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_update (type: Boolean)\nDetermine if the logging category `update` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_update_channels (type: Array)\nList of channels for logging category `update`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_update_security (type: Boolean)\nDetermine if the logging category `update-security` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_update_security_channels (type: Array)\nList of channels for logging category `update-security`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_xfer_in (type: Boolean)\nDetermine if the logging category `xfer-in` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_xfer_in_channels (type: Array)\nList of channels for logging category `xfer-in`.\n\n- *Default*: ['default_syslog']\n\n---\n#### enable_logging_category_xfer_out (type: Boolean)\nDetermine if the logging category `xfer-out` should be enabled.\n\n- *Default*: false\n\n---\n#### logging_category_xfer_out_channels (type: Array)\nList of channels for logging category `xfer-out`.\n\n- *Default*: ['default_syslog']\n\n---\n#### channels_dir (type: String)\nAbsolute path to directory which will contain the channel snippets.\n\n- *Default*: '/etc/named/channels.d'\n\n---\n#### channels_list (type: String)\nAbsolute path to file which will contain the list of channel snippets.\n\n- *Default*: '/etc/named/channels'\n\n---\n#### channels (type: Hash or undef)\nHash of bind::channel resources.\n\n- *Default*: undef\n\n---\n#### channels_hiera_merge (type: Boolean)\nDetermine if the `channels` parameter should be populated using Hiera's merge\nlookup.\n\n- *Default*: true\n\n---\n#### acls_dir (type: String)\nAbsolute path to directory which will contain the acl snippets.\n\n- *Default*: '/etc/named/acls.d'\n\n---\n#### acls_list (type: String)\nAbsolute path to file which will contain the list of acl snippets.\n\n- *Default*: '/etc/named/acls'\n\n---\n#### acls (type: Hash or undef)\nHash of `bind::acl` resources.\n\n- *Default*: undef\n\n---\n#### acls_hiera_merge (type: Boolean)\nDetermine if the `acls` parameter should be populated using Hiera's merge\nlookup.\n\n- *Default*: true\n\n---\n#### controls (type: Hash or undef)\nSpecifies information for controls lines in the named.conf. The key is the IP\naddress or `'*'`. The hash has subkeys that must include 'port' (string),\n'allows' (array) and optionally 'keys' (array).\n\n- *Default*: undef\n\n##### Example:\n```yaml\nbind::controls:\n  '*':\n    port: '953'\n    allows:\n      - '127.0.0.1'\n    keys:\n      - 'rndc-key'\n```\n---\n#### keys (type: Hash or undef)\nHash of `bind::key` resources.\n\n- *Default*: undef\n\n---\n#### keys_hiera_merge (type: Boolean)\nDetermine if the `keys` parameter should be populated using Hiera's merge\nlookup.\n\n- *Default*: true\n\n---\n#### keys_list (type: String)\nAbsolute path to file which will contain the list of key snippets.\n\n- *Default*: '/etc/named/keys'\n\n---\n#### masters_dir (type: String)\nAbsolute path to directory which will contain the master snippets.\n\n- *Default*: '/etc/named/masters.d'\n\n---\n#### masters_list (type: String)\nAbsolute path to file which will contain the list of master snippets.\n\n- *Default*: '/etc/named/masters'\n\n---\n#### masters (type: Hash or undef)\nHash of `bind::master` resources.\n\n- *Default*: undef\n\n---\n#### masters_hiera_merge (type: Boolean)\nDetermine if the `masters` parameter should be populated using Hiera's merge\nlookup.\n\n- *Default*: true\n\n---\n#### views_dir (type: String)\nAbsolute path to directory which will contain the view snippets.\n\n- *Default*: '/etc/named/views.d'\n\n---\n#### views_list (type: String)\nAbsolute path to file which will contain the list of view snippets.\n\n- *Default*: '/etc/named/views'\n\n---\n#### views (type: Hash or undef)\nHash of `bind::view` resources.\n\n- *Default*: undef\n\n---\n#### views_hiera_merge (type: Boolean)\nDetermine if the `views` parameter should be populated using Hiera's merge\nlookup.\n\n- *Default*: true\n\n---\n#### zones_dir (type: String)\nAbsolute path to directory which will contain the zone snippets.\n\n- *Default*: '/etc/named/zones.d'\n\n---\n#### zones_hiera_merge (type: Boolean)\nDetermine if the `zones` parameter should be populated using Hiera's merge\nlookup.\n\n- *Default*: true\n\n---\n#### zones (type: Hash or undef)\nHash of `bind::zone` resources.\n\n- *Default*: undef\n\n---\n#### zone_lists_dir (type: String)\nAbsolute path to directory which will contain the zone lists.\n\n- *Default*: '/etc/named/zone_lists'\n\n---\n#### sysconfig_options (type: String)\nOptions string to be used in OPTIONS line of sysconfig file at\n`/etc/sysconfig/named`.\n\n- *Default*: undef\n\n---\n\n# Define Descriptions\n## Defined type `bind::acl`\n\n### Description\n\nManage acl declarations.\n\nMust specify at least one of `entries` and `keys`.\n\n### Parameters\n\n---\n#### name (type: String)\nUnique name of the `acl` declaration.\n\n---\n#### entries (type: Array or undef)\nList of entries for an `acl` declaration.\n\n- *Default*: undef\n\n---\n#### keys (type: Array or undef)\nList of keys for an `acl` declaration.\n\n- *Default*: undef\n\n---\n\n## Defined type `bind::channel`\n\n### Description\n\nManage a channel declaration. The types are fundamentally those of files or\nsyslog, so one of `syslog_facility` and `file` must be populated.\n\n##### Example:\n```yaml\nbind::channels:\n  'my_syslog':\n    type: 'syslog'\n    syslog_facility: 'daemon'\n    severity: 'info'\n```\n---\n\n### Parameters\n\n---\n#### name (type: String)\nName of logging channel.\n\n---\n#### type (type: String)\nType of logging channel. Valid values are 'file', 'syslog', 'stderr' and 'null'.\n\n- *Required*\n\n---\n#### file (type: String)\nValue of `file` option for channel. May be a relative path.\n\n- *Default*: undef\n\n---\n#### severity (type: String)\nValue of `severity` option for channel.\n\n- *Default*: undef\n\n---\n#### syslog_facility (type: String)\nValue of `syslog` option for channel.\n\n- *Default*: undef\n\n## Defined type `bind::key`\n\n### Description\n\nManage a key declaration.\n\n##### Example:\n```yaml\nbind::keys:\n  'key-external-transfer':\n    secret: 'generated_secret'\n  'key-internal-transfer':\n    secret: 'generated_secret'\n```\n---\n\n### Parameters\n\n---\n#### name (type: String)\nName of key.\n\n---\n#### secret (type: String)\nValue of `secret` option for key.\n\n- *Required*\n\n---\n#### algorithm (type: String)\nValue of `algorithm` option for key.\n\n- *Default*: 'hmac-md5'\n\n---\n#### path (type: Integer)\nAbsolute path to file containing the key declaration.\n\n- *Default*: \"/etc/named/${name}.key\"\n\n## Defined type `bind::masters`\n\n### Description\n\nManage a masters declaration.\n\n##### Example:\n```yaml\nbind::masters:\n  'masters-external':\n    entries:\n      '10.1.2.3': 'key-external'\n  'masters-internal':\n    entries:\n      '10.3.2.1': 'key-internal'\n      '10.3.2.2': 'key-internal'\n```\n---\n\n### Parameters\n\n---\n#### name (type: String)\nName of masters declaration.\n\n---\n#### entries (type: Hash )\nHash of entries for masters declaration. The key is the IP address and the\nvalue is the name of a key.\n\n- *Required*\n\n## Defined type `bind::view`\n\n### Description\n\nManage a bind view clause.\n\n### Example\n```yaml\nbind::views:\n  'corp-internal':\n    order: 10\n    match_clients:\n      - 'corporate'\n      - 'key key-test'\n    recursion: 'yes'\n    includes:\n      - '/etc/named.rfc1912.zones'\n      - '/etc/named/zone_lists/internal.zones'\n      - '/etc/named/zone_lists/corp_internal.zones'\n    allow_update: 'internal-updates'\n    allow_update_forwarding: 'internal-updates'\n    allow_transfer: 'internal-transfer'\n```\n\n### Parameters\n\n---\n#### match_clients (type: String or Array)\n- *Default*: 'any'\n\n---\n#### recursion (type: String)\nValid values are 'yes' and 'no'.\n\n- *Default*: undef\n\n---\n#### includes (type: Array)\n- *Default*: undef\n\n---\n#### allow_update (type: String)\n- *Default*: undef\n\n---\n#### allow_update_forwarding (type: String)\n- *Default*: undef\n\n---\n#### allow_transfer (type: String)\n- *Default*: undef\n\n---\n#### order (type: Integer)\n\n- *Default*: undef\n\n---\n\n## Defined type `bind::zone`\n\n### Description\n\nManage a bind zone clause.\n\nTo allow for the same domain to be specified multiple times though with\ndifferent views, the `$title` may contain the view. This is done in the\nform of `domain:tag`, by specifying the domain, a colon, then the name\nof the tag. If no tag is specified, the tag will be set to the domain.\nThis allows you to collect these tags such as in a profile.\n\n##### Example profile manifest\n```puppet\n\ninclude ::bind\n\nConcat_fragment \u003c| tag == 'internal' |\u003e\n\nconcat_file { '/etc/named/zone_lists/internal.zones':\n  tag            =\u003e 'internal',\n  ensure_newline =\u003e true,\n  owner          =\u003e 'root',\n  group          =\u003e $::bind::group,\n  mode           =\u003e '0640',\n  require        =\u003e Package['bind'],\n  before         =\u003e File['named_conf'],\n  notify         =\u003e Service['named'],\n}\n```\n\n##### Example without view\n```yaml\nbind::zones:\n  'foo.example.com':\n    type: 'master'\n    target: '/etc/named/zone_lists/internal.zones'\n    extra_path: '/internal'\n```\n\n##### Example with view set to 'internal'\n```yaml\nbind::zones:\n  'foo.example.com:internal':\n    type: 'master'\n    target: '/etc/named/zone_lists/internal.zones'\n    extra_path: '/internal'\n```\n\n\n##### Example:\n```yaml\nbind::zones:\n  'foo.example.com:internal':\n    type: 'master'\n    target: '/etc/named/zone_lists/internal.zones'\n    extra_path: '/internal'\n    update_policies:\n      'bar.example.net':\n        matchtype: 'subdomain'\n        key: 'key-internal'\n      'x.example.org':\n        matchtype: 'name'\n        key: 'key-update-policy-x-example-org'\n        rrs:\n          - 'CNAME'\n  'bar.example.com:internal':\n    type: 'master'\n    target: '/etc/named/zone_lists/internal.zones'\n    extra_path: '/internal'\n    allow_update:\n      - '10.1.1.0/24'\n      - '10.1.2.3'\n      - 'key name-of-key'\n  'bar.example.com:external':\n    type: 'master'\n    target: '/etc/named/zone_lists/external.zones'\n    extra_path: '/external'\n    allow_updates:\n      - '10.1.1.0/24'\n      - '10.1.2.3'\n      - 'key name-of-key'\n    forwarders:\n      - '10.1.1.0/24'\n      - '10.1.2.3'\n      - 'key name-of-key'\n```\n---\n\n### Parameters\n\n---\n#### target (type: String)\nAbsolute path to zone list file which is the target of concat_fragment.\n\n- *Required*\n\n---\n#### extra_path (type: String)\nOptional extra path to be appended to `$bind::zones_dir`. Must be an absolute\npath.\n\n- *Default*: undef\n\n---\n#### masters (type: String)\nValue of `masters` config option in a zone declaration. If `type` is 'slave',\nthis is required, else it is not used.\n\n- *Default*: undef\n\n---\n#### type (type: String)\nValue of `type` config option in a zone declaration. Valid values are 'master'\nand 'slave'.\n\n- *Default*: undef\n\n---\n#### update_policies (type: Hash)\nValues for entire update-policy declaration within the zone declaration. The\nkey is the target of the `grant` config option. Value 'key' is the key to be\nused for the grant and is required. Value 'matchtype' maps to the matchtype and\nis required. Value 'rrs' maps to an array of resource records and is optional.\n\n- *Default*: undef\n\n---\n#### allow_updates (type: Array)\nValues for allow-update declaration within the zone declaration. This is\nmutually exclusive with update_policies.\n\n- *Default*: undef\n\n---\n#### forwarders (type: Array)\nValues for forwarders declaration within the zone declaration. If you\nspecify an array with a single value of 'empty' it will generate an\nempty forwarders section.\n\n```\nforwarders {};\n```\n\n- *Default*: undef\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghoneycutt%2Fpuppet-module-bind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghoneycutt%2Fpuppet-module-bind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghoneycutt%2Fpuppet-module-bind/lists"}