Octodns
From NixOS Wiki
OctoDNS is a powerful tool that allows for easy management of DNS records across multiple providers. It leverages Python to provide a unified interface for various DNS services, simplifying DNS administration tasks.
Installation
Install OctoDNS with additional providers
/etc/nixos/configuration.nix
environment.systemPackages = with pkgs; [
(octodns.withProviders (ps: [
octodns-providers.bind
octodns-providers.powerdns
octodns-providers.hetzner
octodns-providers.gandi
]))
];
Usage
In this example we're going to configure the A
record for the domain example.org
which is managed by the provider Gandi
config.yaml
---
providers:
config:
class: octodns.provider.yaml.YamlProvider
directory: ./config
default_ttl: 3600
# Records in the zone config don't have to be sorted alphabetically
enforce_order: False
gandi:
class: octodns_gandi.GandiProvider
token: env/GANDI_TOKEN
zones:
'*':
sources:
- config
targets:
- gandi
Inside the directory config
we're going to create a file with the DNS zone configuration for example.org
config/example.org.yaml
---
'':
- type: A
value: 8.8.8.8
Apply this configuration to the domain
GANDI_TOKEN=1234 octodns-sync --config config.yaml --doit
See also
- Use OctoDNS as a NixOS module and declare DNS setup declarative https://github.com/Janik-Haag/NixOS-DNS
- Dnscontrol, tool to synchronize your DNS to multiple providers from a simple DSL