diff options
| author | Paul Buetow <paul@buetow.org> | 2024-03-18 00:39:51 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-03-18 00:39:51 +0200 |
| commit | f60d5a3ef03b2bb9526c1d27d57e60e673cd95d8 (patch) | |
| tree | 3a265d69b933b8ceb341c3dda0a9cadfcb349953 /frontends | |
| parent | a77f2bf70f1bcc3ec4d08867d280d43504a79673 (diff) | |
initial dns failover script
Diffstat (limited to 'frontends')
| -rw-r--r-- | frontends/scripts/dnsfailover.sh.tpl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/frontends/scripts/dnsfailover.sh.tpl b/frontends/scripts/dnsfailover.sh.tpl new file mode 100644 index 0000000..86fa4e8 --- /dev/null +++ b/frontends/scripts/dnsfailover.sh.tpl @@ -0,0 +1,40 @@ +#!/bin/sh + +ZONES_DIR=/var/nsd/zones/master/ +MASTER_A=master_a +MASTER_AAAA=master_aaaa +STANDBY_A=standby_a +STANDBY_AAAA=standby_aaaa + +process_zone () { + sed -E ' + /IN A .*; Enable failover/ { + /^mirror/! { + s/^(.*) 300 IN A (.*) ; (.*)/\1 300 IN A '$MASTER_A' ; \3/; + } + /^mirror/ { + s/^(.*) 300 IN A (.*) ; (.*)/\1 300 IN A '$STANDBY_A' ; \3/; + } + } + /IN AAAA .*; Enable failover/ { + /^mirror/! { + s/^(.*) 300 IN AAAA (.*) ; (.*)/\1 300 IN AAAA '$MASTER_AAAA' ; \3/; + } + /^mirror/ { + s/^(.*) 300 IN AAAA (.*) ; (.*)/\1 300 IN AAAA '$STANDBY_AAAA' ; \3/; + } + } + / ; serial/ { + s/^( +) ([0-9]+) .*; (.*)/\1 '`date +%s`' ; \3/; + } + ' +} + +failover_zone () { + zone=$1 + cat $zone | process_zone +} + +for zone in $ZONES_DIR/snonux.foo.zone; do + failover_zone $zone +done |
