https://github.com/aspyatkin/nsd-cookbook
Chef cookbook to configure nsd master and slaves
https://github.com/aspyatkin/nsd-cookbook
chef-cookbook nsd
Last synced: about 2 months ago
JSON representation
Chef cookbook to configure nsd master and slaves
- Host: GitHub
- URL: https://github.com/aspyatkin/nsd-cookbook
- Owner: aspyatkin
- License: mit
- Created: 2017-11-09T07:26:16.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-03-22T09:54:31.000Z (over 5 years ago)
- Last Synced: 2025-03-04T12:43:22.632Z (over 1 year ago)
- Topics: chef-cookbook, nsd
- Language: Ruby
- Homepage: https://supermarket.chef.io/cookbooks/nsd
- Size: 13.7 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# nsd cookbook
[]()
[]()
A Chef cookbook to install nsd master and slaves along with initial zone configuration.
## Resources
The examples below configure one master (`ns1.example.com`) and two slave servers (`ns2.example.com` and `ns3.example.com`), all of which host two zones - `example.com` itself and `test.com`. SOA records will contain `hostmaster@example.com` as an email address.
### nsd_master
```ruby
nsd_master 'ns1.example.com' do
port 53
ipv4_address '1.1.1.1'
ipv6_address '2001:0db8:0a0b:12f0:0000:0000:0000:0001'
contact 'hostmaster@example.com'
bind_addresses %w(1.1.1.1 2001:0db8:0a0b:12f0:0000:0000:0000:0001)
enable_ipv6 true
keys({
'ns2.example.com' => '7DzUnLpx9H...',
'ns3.example.com' => '1ADEn1fqOo...'
})
slaves({
'ns2.example.com' => {
'ipv4_address' => '2.2.2.2',
'ipv6_address' => '2001:0db8:0a0b:12f0:0000:0000:0000:0002'
},
'ns3.example.com' => {
'ipv4_address' => '3.3.3.3',
'ipv6_address' => '2001:0db8:0a0b:12f0:0000:0000:0000:0003'
}
})
zones %w(example.com test.com)
action :install
end
```
### nsd_slave
```ruby
nsd_slave 'ns2.example.com' do
port 53
bind_addresses %w(2.2.2.2 2001:0db8:0a0b:12f0:0000:0000:0000:0002)
enable_ipv6 true
key '7DzUnLpx9H...'
zones %w(example.com test.com)
master_ipv4_address '1.1.1.1'
action :install
end
```
```ruby
nsd_slave 'ns3.example.com' do
port 53
bind_addresses %w(3.3.3.3 2001:0db8:0a0b:12f0:0000:0000:0000:0003)
enable_ipv6 true
key '1ADEn1fqOo...'
zones %w(example.com test.com)
master_ipv4_address '1.1.1.1'
action :install
end
```
## AXFR keys
A zone is modified only on a master server. Then the changes are transferred to slave servers. It is presupposed that each slave server has its own secret key. Secret management is up to the user utilizing `nsd_master` and `nsd_slave` resources.
A key may be generated with this command:
```sh
$ dd if=/dev/random count=1 bs=32 2> /dev/null | base64
```
## Limitations
This cookbook does not set up any firewall rules.
## License
MIT @ [Alexander Pyatkin](https://github.com/aspyatkin)