Octodns

From NixOS Wiki
Revision as of 12:07, 8 February 2024 by imported>Onny (Add reference to Dnscontrol)

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