add barebones knot config

This configuration does not yet do much but it provisions a knot
server that runs.
This commit is contained in:
lilly 2026-04-29 22:44:20 +02:00
commit facd770f10
Signed by: lilly
SSH key fingerprint: SHA256:y9T5GFw2A20WVklhetIxG1+kcg/Ce0shnQmbu1LQ37g
8 changed files with 110 additions and 0 deletions

View file

@ -0,0 +1 @@
---

View file

@ -101,3 +101,8 @@
- name: Run ensure_eh22_styleguide_dir Playbook
ansible.builtin.import_playbook: ensure_eh22_styleguide_dir.yaml
- name: Setup authoritative dns servers
hosts: auth-dns
roles:
- auth-dns

View file

@ -0,0 +1,13 @@
# Links & Resources
# https://www.knot-dns.cz/docs/latest/html/index.html
services:
knot:
image: docker.io/cznic/knot:v3.5.4
restart: unless-stopped
command: "knotd"
network_mode: host
volumes:
- ./configs:/config:ro
- ./storage:/storage

View file

@ -0,0 +1,8 @@
- tags: [ 02-auth-dns ]
name: restart knot
become: true
notify: restart knot
ansible.builtin.systemd:
name: knot.service
state: restarted

View file

@ -0,0 +1,6 @@
- tags: [ auth-dns ]
name: Install knot
become: true
package:
name: [ knot, knot-exporter ]

View file

@ -0,0 +1,11 @@
- tags: [ auth-dns ]
name: Deploy knot configuration file
become: true
notify: restart knot
template:
src: knot.conf.j2
dest: /etc/knot/knot.conf
owner: knot
group: knot
mode: u=rw,g=r,o=

View file

@ -0,0 +1,2 @@
- import_tasks: 01-install.yaml
- import_tasks: 02-configure.yaml

View file

@ -0,0 +1,64 @@
# {{ ansible_managed }}
# See knot.conf(5) or refer to the server documentation.
server:
rundir: "/run/knot"
user: knot:knot
automatic-acl: on
listen: [ "0.0.0.0@53", "::@53" ]
log:
- target: syslog
any: info
database:
storage: "/var/lib/knot"
key:
- id: auth-dns.hamburg.ccc.de
algorithm: hmac-sha512
secret: ""
remote:
- id: quad9
address: "2620:fe::fe"
# define how the presence of parent KSK keys is checked
# in this case, we just ask quad9 which is an open resolver
submission:
- id: default
parent: quad9
parent-delay: 1h
# define how dnssec signing is done
# in this case we don't do anything special but teach knot how to check of KSK presence
policy:
- id: default
ksk-submission: default
nsec3: true
nsec3-salt-length: 0
# define default settings that apply to all zones
template:
- id: default
storage: "/etc/knot/zones"
file: "%s.zone"
semantic-checks: on
zonefile-sync: -1
zonefile-load: difference-no-serial
journal-content: all
default-ttl: 60
catalog-role: member
catalog-zone: hamburg.ccc.de.catalog.
dnssec-signing: on
dnssec-policy: default
{# notify: ["ns1.hanse.de", "ns.bsd.network."] #}
- id: minimal
{# notify: ["ns1.hanse.de", "ns.bsd.network."] #}
zone:
{# - domain: onsite.eurofurence.catalog. #}
{# template: minimal #}
{# catalog-role: generate #}
{# - domain: "onsite.eurofurence.org" #}