cookbook 'djbdns', '= 5.1.7'
djbdns
(35) Versions
5.1.7
-
Follow10
Installs djbdns and configures DNS services
cookbook 'djbdns', '= 5.1.7', :supermarket
knife supermarket install djbdns
knife supermarket download djbdns
djbdns Cookbook
Installs and configures Dan Bernstein's DNS tinydns, aka djbdns. Services are configured to start up under runit.
Maintainers
This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If you’d like to know more please visit sous-chefs.org or come chat with us on the Chef Community Slack in #sous-chefs.
Requirements
Platforms
The following platforms are supported via test kitchen.
- Ubuntu
- Debian
- RHEL
It may work with or without modification on other platforms, particularly using the source
install method.
Chef
- Chef 14+
Cookbooks
- build-essential - for compiling the source.
- ucspi-tcp -
tcpserver
is used by the axfr recipe. - runit - for setting up the services.
Attributes
-
node['djbdns']['tinydns_ipaddress']
- listen address for public facing tinydns server -
node['djbdns']['tinydns_internal_ipaddress']
- listen address for internal tinydns server -
node['djbdns']['public_dnscache_ipaddress']
- listen address for public DNS cache -
node['djbdns']['axfrdns_ipaddress']
- listen address for axfrdns -
node['djbdns']['public_dnscache_allowed_networks']
- subnets that are allowed to talk to the dnscache. -
node['djbdns']['tinydns_internal_resolved_domain']
- default domain this tinydns serves -
node['djbdns']['tinydns_internal_resolved_reverse_domains']
- default in-addr.arpa domains this tinydns serves -
node['djbdns']['axfrdns_dir']
- default location of the axfrdns service and configuration, default/etc/djbdns/axfrdns
-
node['djbdns']['tinydns_dir']
- default location of the tinydns service and configuration, default/etc/djbdns/tinydns
-
node['djbdns']['tinydns_internal_dir']
- default location of the tinydns internal service and configuration, default/etc/djbdns/tinydns_internal
-
node['djbdns']['public_dnscache_dir']
- default location of the public dnscache service and configuration, default/etc/djbdns/public-dnscache
-
node['djbdns']['bin_dir']
- default location where binaries will be stored. -
node['djbdns']['axfrdns_uid']
- default uid for the axfrdns user -
node['djbdns']['dnscache_uid']
- default uid for the dnscache user -
node['djbdns']['dnslog_uid']
- default uid for the dnslog user -
node['djbdns']['tinydns_uid']
- default uid for the tinydns user -
node['djbdns']['package_name']
- name of the djbdns package. this shouldn't be changed most of the time, but may be necessary to use the Debian fork,dbndns
. -
node['djbdns']['install_method']
- method used to install djbdns, can bepackage
, orsource
.
Resources
djbdns_rr
Adds a resource record for the specified FQDN.
Actions
-
:add
: Creates a new entry in the tinydns data file with theadd-X
scripts in the tinydns root directory.
Attribute Parameters
-
fqdn
: name attribute. specifies the fully qualified domain name of the record. -
ip
: ip address for the record. -
type
: specifies the type of entry. valid types are: alias, alias6, childns, host, host6, mx, and ns. default ishost
. -
cwd
: current working directory where the add scripts and data files must be located. default is the node attributedjbdns[:tinydns_internal_dir]
, usually/etc/djbdns/tinydns-internal
.
Example
djbdns_rr 'www.example.com' do ip '192.168.0.100' type 'host' action :add notifies :run, 'execute[build-tinydns-internal-data]' end
(The resource execute[build-tinydns-internal-data]
should run a make
in the tinydns root directory (aka cwd).
Recipes
default
The default recipe installs djbdns software from package where available, otherwise installs from source. It also sets up the users that will run the djbdns services using the UID's specified by the attributes above. The service type to use is selected based on platform.
The default recipe attempts to install djbdns on as many platforms as possible. It tries to determine the platform's installation method:
- Debian will install from packages
- All other distributions will install from source.
Service specific users will be created as system users:
- dnscache
- dnslog
- tinydns
axfr
Creates the axfrdns user and sets up the axfrdns service.
cache
Sets up a local DNS caching server.
internal_server
Sets up a server to be an internal nameserver. To modify resource records in the environment, modify the tinydns-internal-data.erb template, or create entries in a data bag named djbdns
, and an item named after the domain, with underscores instead of spaces. Example structure of the data bag:
{
"id": "int_example_com",
"ns": [
{ "int.example.com": "192.168.0.5" },
{ "0.168.192.in-addr.arpa": "192.168.0.5" }
],
"alias": [
{ "www.int.example.com": "192.168.0.100" }
],
"host": [
{ "web1.int.example.com": "192.168.0.100" }
]
}
Aliases and hosts should be an array of hashes, each entry containing the fqdn as the key and the IP as the value. In this example 192.168.0.5 is the IP of the nameserver and we're listing it as authoritative for int.example.com and for reverse DNS for 192.168.0.x.
server
Sets up a server to be a public nameserver. To modify resource records in the environment, modify the tinydns-data.erb template. The recipe does not yet use the data bag per internal_server
above, but will in a future release.
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers!
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
djbdns Cookbook CHANGELOG
This file is used to list changes made in each version of the djbdns cookbook.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
5.1.7 - 2023-04-01
5.1.6 - 2023-03-02
5.1.5 - 2023-02-14
5.1.4 - 2023-02-14
- Remove delivery folder
5.1.3 - 2022-01-18
- resolved cookstyle error: tasks/maintainers.rb:37:7 convention:
Style/FileWrite
5.1.2 - 2021-08-31
- Standardise files with files in sous-chefs/repo-management
5.1.1 (2021-06-01)
- Standardise files with files in sous-chefs/repo-management
5.1.0 (2020-11-13)
Changed
- Sous Chefs Adoption
- Update Changelog to Sous Chefs
- Update to use Sous Chefs GH workflow
- Update test-kitchen to Sous Chefs
- Update README to sous-chefs
- Update metadata.rb to Sous Chefs
Fixed
- Yamllint fixes
- MDL fixes
- Fix integration tests
Added
- Add Ubuntu 20.04 testing
5.0.2 (2019-03-18)
- Add a basic converge unit test - @tas50
- Make sure we have wget for source installs - @tas50
- Update Test Kitchen platforms - @tas50
- Add code owners file - @tas50
- Rename the kitchen config - @tas50
- Remove Ubuntu 14.04 testing for 18.04 - @tas50
- Delete the dangling dependency on ucspi-tcp - @RoboticCheese
- Stop creating the runit service directory - @RoboticCheese
- Resolve FoodCritic offenses - @RoboticCheese
5.0.1 (2017-04-26)
- Test with Local Delivery and not Rake
- Move templates out of the default directory since only Chef < 12 requires this
5.0.0 (2017-02-14)
- Require 12.5 and remove compat_resource dependency
4.1.0 (2017-01-17)
- Require the latest compat_resource
- Switch to Inspec for integration testing
- Remove RHEL 5 testing as it's near EOL
4.0.0 (2016-12-05)
- Prevent compile error with source updating method
- Add ChefSpec matchers
- Convert LWRP to a custom resource and use compat_resource for 12.1+ compatibility
- Make sure IPSEND is set so the cache starts
- Fix Chef 13 compatibility by updating manage_home
3.0.0 (2016-09-15)
- Testing updates and remove FQDN from templates
- Update maintainers wording and format [skip-ci]
- Testing updates
- Require Chef 12.1+
v2.0.0 (2016-05-20)
BREAKING CHANGE
This version removes support for bluepill and daemontools init systems and Arch Linux. If you rely on that support you'll want to pin to the 1.2.0 release
This version now manages all djbdns env files to be compatible with the newest runit release. If you manage these files outside of the djbdns recipe you'll need to use the new attributes
v1.2.0
- Removed newlines in configs to prevent restarts
- Removed inclusion of ucspi-tcp recipe for source installs
- Convert hashes to Ruby 1.9+ format
- Bump Runit dependency to 1.6.0 from 1.5.0
- Updated Test Kitchen config with the latest platforms and a suite for source install
- Added Travis CI config
- Added a simple contributing doc to replace the Chef Software Inc version
- Updated the development gem requirements and break gems into groups in the gemfile
- Added a cookbook version badge in the readme
- Added a chefignore file to limit what files are uploaded to the chef server
- Added additional platforms to the metadata
- Add source_url and issues_url to the metadata
- Make modes strings to preserve the leading 0s
- Resolve rubocop warnings
- Added additional unit tests
v1.1.0
- Update dependency for current runit cookbook, #7
- Debian is a source based platform, #9 (see issue for background)
- Add
package_name
attribute to allow for installing dbndns, #16, related to #9 - Use runit as default service type instead of bluepill, #10
- Drop explicit support for old unsupported Ubuntu versions, #11
- Manage runit's sv dir for "reasons," #12
- Remove attributes from metadata, as they're not used for anything anywhere anyway
v1.0.2
- [COOK-2262] - pin runit dependency
v1.0.0
- [COOK-1739] - use node attributes with hash notation instead of just the attribute name (ipaddress, domain) in djbdns attributes file
- [COOK-1742] - fix foodcritic warnings, use platform_family where apropriate
v0.99.4
- [COOK-1259] - Support local (10.x, 172.x, 192.168.x) reverse lookups in cache
v0.99.2
- [COOK-1042] - Corrected a syntax error in axfr.
- [COOK-740] - use correct directory for tinydns root data
Previous versions
The various recipes now support multiple service types. This is controlled with the node[:djbdns][:service_type]
attribute, which is set by platform in the default recipe.
ArchLinux support has been added, as well as naively attempting other platforms by source-compiled installation with bluepill for service management.
Collaborator Number Metric
5.1.7 passed this metric
Contributing File Metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Cookstyle Metric
5.1.7 failed this metric
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. (https://docs.chef.io/workstation/cookstyle/chef_deprecations_resourcewithoutunifiedtrue): djbdns/resources/rr.rb: 1
Run with Cookstyle Version 7.32.1 with cops Chef/Deprecations,Chef/Correctness,Chef/Sharing,Chef/RedundantCode,Chef/Modernize,Chef/Security,InSpec/Deprecations
No Binaries Metric
5.1.7 passed this metric
Testing File Metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
5.1.7 passed this metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Cookstyle Metric
5.1.7 failed this metric
Chef/Deprecations/ResourceWithoutUnifiedTrue: Set `unified_mode true` in Chef Infra Client 15.3+ custom resources to ensure they work correctly in Chef Infra Client 18 (April 2022) when Unified Mode becomes the default. (https://docs.chef.io/workstation/cookstyle/chef_deprecations_resourcewithoutunifiedtrue): djbdns/resources/rr.rb: 1
Run with Cookstyle Version 7.32.1 with cops Chef/Deprecations,Chef/Correctness,Chef/Sharing,Chef/RedundantCode,Chef/Modernize,Chef/Security,InSpec/Deprecations
No Binaries Metric
5.1.7 passed this metric
Testing File Metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
5.1.7 failed this metric
Run with Cookstyle Version 7.32.1 with cops Chef/Deprecations,Chef/Correctness,Chef/Sharing,Chef/RedundantCode,Chef/Modernize,Chef/Security,InSpec/Deprecations
5.1.7 passed this metric
Testing File Metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
5.1.7 failed this metric
5.1.7 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number