Octodns: Difference between revisions

From NixOS Wiki
imported>Onny
Add reference to Dnscontrol
Klinger (talk | contribs)
Line 60: Line 60:
* Use OctoDNS as a NixOS module and declare DNS setup declarative https://github.com/Janik-Haag/NixOS-DNS
* 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
* [[Dnscontrol]], tool to synchronize your DNS to multiple providers from a simple DSL
[[Category:Applications]]
[[Category:Server]]

Revision as of 18:01, 19 April 2024

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