GitOps tooling for OctoDNS: processors, CLI wrappers, and workflow automation.
pip install "octodns-gitops @ git+https://github.com/ginsys/octodns-gitops@main"Or pin to a specific commit:
pip install "octodns-gitops @ git+https://github.com/ginsys/octodns-gitops@COMMIT_HASH"Use in your config.yaml:
processors:
acme-filter:
class: octodns_gitops.processors.AcmeFilter
external-dns-filter:
class: octodns_gitops.processors.ExternalDnsFilter
txt_prefix: 'extdns'
owner_id: 'my-cluster'- AcmeFilter: Ignores
_acme-challengerecords (managed by certificate authorities) - ExternalDnsFilter: Ignores records managed by external-dns
Use in your logging.yaml:
filters:
suppress_soa:
(): octodns_gitops.logging.SuppressSoaWarningsFilteroctodns-gitops-validate- Validate zone file syntaxoctodns-gitops-sync- Sync zones with improved output and safety thresholdsoctodns-gitops-drift- Check for drift between live DNS and local zonesoctodns-gitops-report- Query nameservers and show consistency reportoctodns-gitops-init- Generate Makefile for dns-zones repositories
- Copy the template to your dns-zones repo:
curl -O https://raw.githubusercontent.com/ginsys/octodns-gitops/main/templates/mise.toml- Configure your secrets in
mise.local.toml:
[hooks.enter]
shell = "bash"
script = "source $HOME/etc/keys/tokens.bash"- Run setup:
mise trust
mise run setup- Use the generated Makefile:
make plan # Preview changes
make apply # Apply changes
make drift-check # Check for drift
make report # Query nameserversThe CLI tools read environment variables:
QUIET=1- Quiet mode (default)DEBUG=1- Debug outputZONE=example.com.- Process single zone
GPL-3.0-or-later