Compare commits

..

No commits in common. "f60108dee161ba5bc42f66f2a8af984f6202faf8" and "84e5176e0759d1bab77ec6d5a360bbb82a3ce33e" have entirely different histories.

9 changed files with 28 additions and 44 deletions

View file

@ -4,3 +4,13 @@ from bundlewrap.repo import Repository
from os.path import realpath, dirname from os.path import realpath, dirname
repo = Repository(dirname(dirname(realpath(__file__)))) repo = Repository(dirname(dirname(realpath(__file__))))
domains = set()
for node in repo.nodes:
domains.update(
set(node.metadata.get('opendkim/domains', []))
)
print(domains)
# Do in Metaproc

View file

@ -1,5 +1,3 @@
from ipaddress import ip_interface
database_password = repo.vault.password_for(f'{node.name} db mailserver') database_password = repo.vault.password_for(f'{node.name} db mailserver')
defaults = { defaults = {
@ -12,7 +10,6 @@ defaults = {
'password': database_password, 'password': database_password,
}, },
'test_password': repo.vault.password_for(f'{node.name} test_pw mailserver'), 'test_password': repo.vault.password_for(f'{node.name} test_pw mailserver'),
'domains': [],
}, },
'postgresql': { 'postgresql': {
'roles': { 'roles': {
@ -36,24 +33,6 @@ defaults = {
}, },
} }
@metadata_reactor.provides(
'dns',
)
def dns(metadata):
dns = {}
for domain in metadata.get('mailserver/domains'):
dns[domain] = {
'MX': [
str(ip_interface(metadata.get('network/ipv4')).ip)
],
}
return {
'dns': dns,
}
@metadata_reactor.provides( @metadata_reactor.provides(
'letsencrypt/domains', 'letsencrypt/domains',
) )

View file

@ -5,28 +5,23 @@ from ipaddress import ip_interface
'interfaces', 'interfaces',
) )
def interfaces(metadata): def interfaces(metadata):
interface = {
'ips': [],
}
if metadata.get('network/ipv4', None):
interface['ips'].append(metadata.get('network/ipv4'))
interface['gateway4'] = metadata.get('network/gateway4')
if metadata.get('network/ipv6', None):
interface['ips'].append(metadata.get('network/ipv6'))
interface['gateway6'] = metadata.get('network/gateway6')
return { return {
'interfaces': { 'interfaces': {
metadata.get('network/interface'): interface, metadata.get('network/interface'): {
'ips': list(filter(None.__ne__, [
metadata.get('network/ipv4', None),
metadata.get('network/ipv6', None),
])),
'gateway4': metadata.get('network/gateway4', None),
'gateway6': metadata.get('network/gateway6', None),
},
} }
} }
@metadata_reactor.provides( @metadata_reactor.provides(
'network/gateway4', 'interfaces/gateway4',
'network/gateway6', 'interfaces/gateway6',
) )
def guess_gateway(metadata): def guess_gateway(metadata):
if metadata.get('network/gateway4', None): if metadata.get('network/gateway4', None):

View file

@ -1,4 +1,5 @@
from ipaddress import ip_interface from ipaddress import ip_interface
from bundlewrap.metadata import atomic
defaults = { defaults = {
'apt': { 'apt': {

View file

@ -32,20 +32,20 @@ files = {
'/etc/opendkim/key_table': { '/etc/opendkim/key_table': {
'content_type': 'mako', 'content_type': 'mako',
'context': { 'context': {
'domains': node.metadata.get('mailserver/domains'), 'domains': node.metadata.get('opendkim/domains'),
}, },
**file_attributes, **file_attributes,
}, },
'/etc/opendkim/signing_table': { '/etc/opendkim/signing_table': {
'content_type': 'mako', 'content_type': 'mako',
'context': { 'context': {
'domains': node.metadata.get('mailserver/domains'), 'domains': node.metadata.get('opendkim/domains'),
}, },
**file_attributes, **file_attributes,
}, },
} }
for domain in node.metadata.get('mailserver/domains'): for domain in node.metadata.get('opendkim/domains'):
directories[f'/etc/opendkim/keys/{domain}'] = { directories[f'/etc/opendkim/keys/{domain}'] = {
**file_attributes, **file_attributes,
'purge': True, 'purge': True,

View file

@ -13,6 +13,7 @@ defaults = {
}, },
}, },
'opendkim': { 'opendkim': {
'domains': [],
'keys': {}, 'keys': {},
}, },
'dns': { 'dns': {
@ -31,7 +32,7 @@ defaults = {
def keys(metadata): def keys(metadata):
keys = {} keys = {}
for domain in metadata.get('mailserver/domains'): for domain in metadata.get('opendkim/domains'):
if domain in metadata.get(f'opendkim/keys'): if domain in metadata.get(f'opendkim/keys'):
continue continue

View file

@ -1 +0,0 @@
{}

View file

@ -1,7 +1,4 @@
{ {
'supergroups': [
'all',
],
'bundles': [ 'bundles': [
'network', 'network',
'systemd', 'systemd',

View file

@ -37,6 +37,8 @@
'mailserver': { 'mailserver': {
'hostname': 'mail2.sublimity.de', 'hostname': 'mail2.sublimity.de',
'admin_email': 'postmaster@sublimity.de', 'admin_email': 'postmaster@sublimity.de',
},
'opendkim': {
'domains': [ 'domains': [
'mail2.sublimity.de', 'mail2.sublimity.de',
# 'sublimity.de', # 'sublimity.de',