Octodns: Difference between revisions

From NixOS Wiki
imported>Onny
Add example usage
imported>Onny
Update example config
Line 30: Line 30:
   gandi:
   gandi:
     class: octodns_gandi.GandiProvider
     class: octodns_gandi.GandiProvider
     api_key: env/GANDI_API_KEY
     token: env/GANDI_TOKEN


zones:
zones:
Line 52: Line 52:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
GANDI_API_KEY=1234 octodns-sync --config config.yaml --doit
GANDI_TOKEN=1234 octodns-sync --config config.yaml --doit
</syntaxhighlight>
</syntaxhighlight>



Revision as of 14:14, 16 January 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
    enforce_order: True
  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