Disable records instead of deleting them
A disabled record stays in Jarl with its ID, TTL and comment but is left out of the zone; the zone file lists it as a comment. Web UI toggle, jarl record disable|enable, record.disable|enable operations and API endpoints. Database schema 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5f04ab523b
commit
295c549479
29 files changed
+815
-60
No files matched your search
+17
-2
@@ -245,7 +245,7 @@ Jarl.)
|
||||
## Records
|
||||
|
||||
```sh
|
||||
jarl record list adbraun.lol [--name www] [-t A] [--search nas]
|
||||
jarl record list adbraun.lol [--name www] [-t A] [--search nas] [--disabled]
|
||||
jarl record add adbraun.lol nas A 192.168.1.20 --ptr --comment "synology"
|
||||
jarl record add adbraun.lol @ MX 10 mail
|
||||
jarl record add adbraun.lol @ TXT "v=spf1 mx -all" # plain text, quoting is automatic
|
||||
@@ -257,6 +257,9 @@ jarl record update 1234 --ttl default
|
||||
jarl record delete adbraun.lol www A # every A record of www
|
||||
jarl record delete adbraun.lol www A 192.168.1.10 # just this one
|
||||
jarl record delete --id 1234 [--ptr]
|
||||
jarl record disable adbraun.lol www A 192.168.1.10 --ptr # out of the zone, kept in Jarl
|
||||
jarl record enable adbraun.lol www A 192.168.1.10 --ptr # back again
|
||||
jarl record disable --id 1234 # by ID; same for enable
|
||||
|
||||
# reverse zones: name records by address; the host name needs no final dot
|
||||
jarl record add 0.10.10.in-addr.arpa 10.10.0.20 PTR nas.adbraun.lol
|
||||
@@ -273,6 +276,16 @@ by Jarl). Every record type BIND supports can be used. Jarl knows the
|
||||
syntax of the common ones and checks them strictly, and the rest are
|
||||
validated by parsing.
|
||||
|
||||
**Disabling** a record takes it out of the zone without deleting it: it
|
||||
keeps its ID, TTL and comment, the zone file lists it as a comment
|
||||
(`; disabled: www IN A ...`), and `enable` puts it back exactly as it
|
||||
was. `record list` marks disabled records `[disabled]`, and `zone show`
|
||||
counts them. The zone is validated as it is served: you can't disable its
|
||||
last NS record, and enabling a record is checked like adding it (a CNAME
|
||||
added at the same name in the meantime stops it). `record set` enables a
|
||||
disabled record whose value it is given, and leaves other disabled
|
||||
records alone.
|
||||
|
||||
## Batches: `jarl apply -f`
|
||||
|
||||
Several changes that must succeed or fail together:
|
||||
@@ -287,6 +300,7 @@ changes:
|
||||
- set: {zone: adbraun.lol, name: api, type: A, data: [192.168.1.41, 192.168.1.42], ttl: 60}
|
||||
- update: {id: 1235, comment: "old web server, remove in November"}
|
||||
- delete: {id: 1240}
|
||||
- disable: {zone: adbraun.lol, name: old, type: A} # or {id: ...}; enable: likewise
|
||||
- op: acl.update # any API operation (see api.md)
|
||||
id: 3
|
||||
data: {elements: [192.168.1.0/24, 10.10.0.0/16]}
|
||||
@@ -430,4 +444,5 @@ See [acme.md](acme.md) for certbot, acme.sh and a dedicated ACME zone.
|
||||
* `-q` with `create` commands prints just the ID or token.
|
||||
* Check `$?` against the exit code table.
|
||||
* `jarl record delete ... --missing-ok` succeeds when nothing matches, which
|
||||
keeps cleanup scripts idempotent. `jarl record set` is idempotent by nature.
|
||||
keeps cleanup scripts idempotent. So does `record disable|enable
|
||||
--missing-ok`, also when the records are already disabled (enabled). `jarl record set` is idempotent by nature.
|
||||
Reference in new issue
Block a user