From f333ad963e4f15443b92a15d1ad50f06184b722a Mon Sep 17 00:00:00 2001 From: mwiegand Date: Sun, 7 Nov 2021 18:07:28 +0100 Subject: [PATCH] wip --- bundles/bind/files/named.conf.local | 2 +- bundles/bind/items.py | 25 +++++++++---------------- bundles/bind/metadata.py | 24 +++++++++++++++++++----- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/bundles/bind/files/named.conf.local b/bundles/bind/files/named.conf.local index 40d2c65..4bf32ba 100644 --- a/bundles/bind/files/named.conf.local +++ b/bundles/bind/files/named.conf.local @@ -9,7 +9,7 @@ key "${key_name}" { % endfor % endfor -# ACL +# ACLS % for acl_name, acl_content in acls.items(): acl "${acl_name}" { diff --git a/bundles/bind/items.py b/bundles/bind/items.py index 0118129..5ee763c 100644 --- a/bundles/bind/items.py +++ b/bundles/bind/items.py @@ -1,6 +1,11 @@ from ipaddress import ip_address, ip_interface from datetime import datetime +if node.metadata.get('bind/type') == 'master': + master_node = node +else: + master_node = repo.get_node(node.metadata.get('bind/master_node')) + directories[f'/var/lib/bind'] = { 'owner': 'bind', 'group': 'bind', @@ -37,24 +42,12 @@ files['/etc/bind/named.conf'] = { ], } -if node.metadata.get('bind/type') == 'master': - master_node = node - master_ip = None - slave_ips = [ - ip_interface(repo.get_node(slave).metadata.get('network/external/ipv4')).ip - for slave in node.metadata.get('bind/slaves') - ] -else: - master_node = repo.get_node(node.metadata.get('bind/master_node')) - master_ip = ip_interface(repo.get_node(node.metadata.get('bind/master_node')).metadata.get('network/external/ipv4')).ip - slave_ips = [] - files['/etc/bind/named.conf.options'] = { 'content_type': 'mako', 'context': { 'type': node.metadata.get('bind/type'), - 'slave_ips': sorted(slave_ips), - 'master_ip': master_ip, + 'slave_ips': node.metadata.get('bind/slave_ips', []), + 'master_ip': node.metadata.get('bind/master_ip', None), }, 'owner': 'root', 'group': 'bind', @@ -73,7 +66,7 @@ files['/etc/bind/named.conf.local'] = { 'content_type': 'mako', 'context': { 'type': node.metadata.get('bind/type'), - 'master_ip': master_ip, + 'master_ip': node.metadata.get('bind/master_ip', None), 'acls': { **master_node.metadata.get('bind/acls'), **{ @@ -99,7 +92,7 @@ files['/etc/bind/named.conf.local'] = { ], } -for view_name, view_conf in node.metadata.get('bind/views').items(): +for view_name, view_conf in master_node.metadata.get('bind/views').items(): directories[f"/var/lib/bind/{view_name}"] = { 'owner': 'bind', 'group': 'bind', diff --git a/bundles/bind/metadata.py b/bundles/bind/metadata.py index 8f9f832..d737bc4 100644 --- a/bundles/bind/metadata.py +++ b/bundles/bind/metadata.py @@ -57,13 +57,27 @@ defaults = { @metadata_reactor.provides( 'bind/type', + 'bind/master_ip', + 'bind/slave_ips', ) -def type(metadata): - return { - 'bind': { - 'type': 'slave' if metadata.get('bind/master_node', None) else 'master', +def master_slave(metadata): + if metadata.get('bind/master_node', None): + return { + 'bind': { + 'type': 'slave', + 'master_ip': str(ip_interface(repo.get_node(metadata.get('bind/master_node')).metadata.get('network/external/ipv4')).ip), + } + } + else: + return { + 'bind': { + 'type': 'master', + 'slave_ips': { + str(ip_interface(repo.get_node(slave).metadata.get('network/external/ipv4')).ip) + for slave in metadata.get('bind/slaves') + } + } } - } @metadata_reactor.provides(