Compare commits
No commits in common. "f60108dee161ba5bc42f66f2a8af984f6202faf8" and "84e5176e0759d1bab77ec6d5a360bbb82a3ce33e" have entirely different histories.
f60108dee1
...
84e5176e07
9 changed files with 28 additions and 44 deletions
|
@ -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
|
||||||
|
|
|
@ -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',
|
||||||
)
|
)
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from ipaddress import ip_interface
|
from ipaddress import ip_interface
|
||||||
|
from bundlewrap.metadata import atomic
|
||||||
|
|
||||||
defaults = {
|
defaults = {
|
||||||
'apt': {
|
'apt': {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
{}
|
|
|
@ -1,7 +1,4 @@
|
||||||
{
|
{
|
||||||
'supergroups': [
|
|
||||||
'all',
|
|
||||||
],
|
|
||||||
'bundles': [
|
'bundles': [
|
||||||
'network',
|
'network',
|
||||||
'systemd',
|
'systemd',
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in a new issue