diff --git a/bundles/bind/items.py b/bundles/bind/items.py new file mode 100644 index 0000000..e69de29 diff --git a/bundles/bind/metadata.py b/bundles/bind/metadata.py new file mode 100644 index 0000000..e6b4030 --- /dev/null +++ b/bundles/bind/metadata.py @@ -0,0 +1,44 @@ +defaults = { + 'bind': { + 'zones': {}, + }, +} + + +@metadata_reactor.provides( + 'bind/zones', +) +def collect_records(metadata): + zones = metadata.get('bind/zones') + + for other_node in repo.nodes: + print(other_node.name) + for fqdn, records in other_node.metadata.get('dns').items(): + matching_zones = sorted( + filter( + lambda potential_zone: fqdn.endswith(potential_zone), + zones + ), + key=len, + ) + + if matching_zones: + zone = matching_zones[0] + else: + continue + + name = fqdn[0:-len(zone) - 1] + + for type, values in records.items(): + for value in values: + zones\ + .setdefault(zone, [])\ + .append( + (name, type, value) + ) + + return { + 'bind': { + 'zones': zones, + }, + } diff --git a/groups/all.py b/groups/all.py index 0967ef4..2e8e687 100644 --- a/groups/all.py +++ b/groups/all.py @@ -1 +1,5 @@ -{} +{ + 'metadata': { + 'dns': {}, + } +} diff --git a/groups/applications/dnsserver.py b/groups/applications/dnsserver.py new file mode 100644 index 0000000..68c889c --- /dev/null +++ b/groups/applications/dnsserver.py @@ -0,0 +1,5 @@ +{ + 'bundles': [ + 'bind', + ], +} diff --git a/nodes/home.backups.py b/nodes/home.backups.py index 3a24e7c..418626e 100644 --- a/nodes/home.backups.py +++ b/nodes/home.backups.py @@ -1,3 +1,6 @@ { + 'groups': [ + 'debian-10', + ], 'metadata': {}, } diff --git a/nodes/htz.games.py b/nodes/htz.games.py index 2033dac..8363a2b 100644 --- a/nodes/htz.games.py +++ b/nodes/htz.games.py @@ -1,4 +1,7 @@ { + 'groups': [ + 'debian-10', + ], 'bundles': [ 'steam', 'l4d2', diff --git a/nodes/htz.mails.py b/nodes/htz.mails.py index 0c93520..ddb2492 100644 --- a/nodes/htz.mails.py +++ b/nodes/htz.mails.py @@ -5,12 +5,27 @@ 'debian-10', 'mailserver', 'webserver', + 'dnsserver', ], 'bundles': [ 'wireguard', 'zfs', ], 'metadata': { + 'bind': { + 'zones': { + 'mail2.sublimity.de': [], + 'sublimity.de': [], + 'freibrief.net': [], + 'nadenau.net': [], + 'naeder.net': [], + 'rolfwerner.eu': [], + 'wettengl.net': [], + 'wingl.de': [], + 'woodpipe.de': [], + 'ckn.li': [], + }, + }, 'network': { 'interface': 'eth0', 'ipv4': '162.55.188.157/32',