Compare commits

..

No commits in common. "2f5af670f45042b078ef9ef1c4b657c245c6a3ba" and "fa576f4b5c8a0dea1188d01aad387bdcdbf95ce4" have entirely different histories.

14 changed files with 24 additions and 114 deletions

View file

@ -43,23 +43,19 @@ def zfs(metadata):
@metadata_reactor.provides( @metadata_reactor.provides(
'dns', 'dns'
) )
def dns(metadata): def dns(metadata):
records = {}
if metadata.get('network/ipv4', None):
records['A'] = [str(ip_interface(metadata.get('network/ipv4')).ip)]
if metadata.get('network/ipv6', None):
records['AAAA'] = [str(ip_interface(metadata.get('network/ipv6')).ip)]
return { return {
'dns': { 'dns': {
metadata.get('backup-server/hostname'): { metadata.get('backup-server/hostname'): records,
'A': [
str(ip_interface(network['ipv4']).ip)
for network in metadata.get('network').values()
if 'ipv4' in network
],
'AAAA': [
str(ip_interface(network['ipv6']).ip)
for network in metadata.get('network').values()
if 'ipv6' in network
],
},
}, },
} }

View file

@ -11,13 +11,7 @@ ssh="ssh -o StrictHostKeyChecking=no backup-receiver@$server"
source_dataset=$(zfs list -H -o mountpoint,name | grep -P "^$path\t" | cut -d $'\t' -f 2) source_dataset=$(zfs list -H -o mountpoint,name | grep -P "^$path\t" | cut -d $'\t' -f 2)
target_dataset="tank/$uuid/$source_dataset" target_dataset="tank/$uuid/$source_dataset"
target_dataset_parent=$(echo $target_dataset | rev | cut -d / -f 2- | rev) target_dataset_parent=$(echo $target_dataset | rev | cut -d / -f 2- | rev)
bookmark_prefix="auto-backup_" new_bookmark="auto-backup_$(date +"%Y-%m-%d_%H:%M:%S")"
new_bookmark="$bookmark_prefix$(date +"%Y-%m-%d_%H:%M:%S")"
for var in path uuid server ssh source_dataset target_dataset target_dataset_parent new_bookmark
do
[[ -z "${!var}" ]] && echo "ERROR - $var is empty" && exit 97
done
echo "BACKUP ZFS DATASET - PATH: $path, SERVER: $server, UUID: $uuid, SOURCE_DATASET: $source_dataset, TARGET_DATASET: $TARGET_DATASET" echo "BACKUP ZFS DATASET - PATH: $path, SERVER: $server, UUID: $uuid, SOURCE_DATASET: $source_dataset, TARGET_DATASET: $TARGET_DATASET"
@ -27,17 +21,16 @@ then
$ssh sudo zfs create -p -o mountpoint=none "$target_dataset_parent" $ssh sudo zfs create -p -o mountpoint=none "$target_dataset_parent"
fi fi
zfs snap "$source_dataset@$new_bookmark" zfs snap $source_dataset@$new_bookmark
if zfs list -t bookmark -H -o name | grep "#$bookmark_prefix" | wc -l | grep -q "^0$" if zfs list -t bookmark -H -o name | grep '#auto-backup' | wc -l | grep -q "^0$"
then then
echo "INITIAL BACKUP" echo "INITIAL BACKUP"
zfs send -v "$source_dataset@$new_bookmark" | $ssh sudo zfs recv -F "$target_dataset" zfs send -v "$source_dataset@$new_bookmark" | $ssh sudo zfs recv -F $target_dataset
else else
echo "INCREMENTAL BACKUP" echo "INCREMENTAL BACKUP"
last_bookmark=$(zfs list -t bookmark -H -o name | grep "#$bookmark_prefix" | sort | tail -1 | cut -d '#' -f 2) last_bookmark=$(zfs list -t bookmark -H -o name | sort | tail -1 | cut -d '#' -f 2)
[[ -z "$last_bookmark" ]] && echo "ERROR - last_bookmark is empty" && exit 98 zfs send -v -i "#$last_bookmark" "$source_dataset@$new_bookmark" | $ssh sudo zfs recv $target_dataset
zfs send -v -i "#$last_bookmark" "$source_dataset@$new_bookmark" | $ssh sudo zfs recv "$target_dataset"
fi fi
if [[ "$?" == "0" ]] if [[ "$?" == "0" ]]

View file

@ -101,7 +101,7 @@ plugin {
fts_decoder = decode2text fts_decoder = decode2text
} }
service indexer-worker { service indexer-worker {
vsz_limit = ${indexer_ram} vsz_limit = 1G
} }
service decode2text { service decode2text {
executable = script /usr/local/libexec/dovecot/decode2text.sh executable = script /usr/local/libexec/dovecot/decode2text.sh

View file

@ -31,7 +31,6 @@ files = {
'content_type': 'mako', 'content_type': 'mako',
'context': { 'context': {
'admin_email': node.metadata.get('mailserver/admin_email'), 'admin_email': node.metadata.get('mailserver/admin_email'),
'indexer_ram': node.metadata.get('dovecot/indexer_ram'),
}, },
'needs': { 'needs': {
'pkg_apt:' 'pkg_apt:'

View file

@ -25,13 +25,3 @@ defaults = {
}, },
}, },
} }
@metadata_reactor.provides(
'dovecot/indexer_ram',
)
def indexer_ram(metadata):
return {
'dovecot': {
'indexer_ram': str(metadata.get('vm/ram')//2)+ 'M',
},
}

View file

@ -1,7 +1,7 @@
version = node.metadata.get('php/version') version = node.metadata.get('php/version')
php_ini_context = { php_ini_context = {
'num_cpus': node.metadata.get('vm/cores'), 'num_cpus': node.metadata.get('vm/cpu'),
'post_max_size': node.metadata.get('php/post_max_size', 10), 'post_max_size': node.metadata.get('php/post_max_size', 10),
} }

View file

@ -7,12 +7,7 @@ from bundlewrap.metadata import atomic
defaults = { defaults = {
'apt': { 'apt': {
'packages': { 'packages': {
'wireguard': { 'wireguard': {},
'backports': True,
'triggers': [
'svc_systemd:systemd-networkd:restart',
],
},
}, },
}, },
'wireguard': { 'wireguard': {

View file

@ -1,19 +0,0 @@
{
'networks': [
'10.0.0.0/24',
'10.0.2.0/24',
'10.0.9.0/24',
'10.0.10.0/24',
],
'routers': {
'10.0.0.1': {
'10.0.0.0/24': None,
'10.0.0.2/24': None,
'10.0.0.9/24': None,
},
'10.0.0.2': {
'10.0.0.0/24': 'internal',
'10.0.10.0/24': 'wg0',
},
},
}

View file

@ -1,8 +1,12 @@
{ {
'bundles': [ 'bundles': [
'backup',
'users', 'users',
], ],
'metadata': { 'metadata': {
'backup': {
'server': 'home.backups',
},
'dns': {}, 'dns': {},
'nameservers': [ 'nameservers': [
'10.0.10.2', '10.0.10.2',

View file

@ -1,10 +0,0 @@
{
'bundles': [
'backup',
],
'metadata': {
'backup': {
'server': 'home.backups',
},
}
}

View file

@ -2,7 +2,6 @@
'hostname': '10.0.0.2', 'hostname': '10.0.0.2',
'groups': [ 'groups': [
'archive', 'archive',
'backup',
'debian-10', 'debian-10',
# 'nextcloud', # 'nextcloud',
], ],
@ -30,6 +29,7 @@
}, },
}, },
'wireguard': { 'wireguard': {
# iptables -t nat -A POSTROUTING -o enp1s0f0 -j MASQUERADE
'my_ip': '172.19.136.1/22', 'my_ip': '172.19.136.1/22',
'peers': { 'peers': {
'htz.mails': { 'htz.mails': {

View file

@ -1,7 +1,6 @@
{ {
'dummy': True, 'dummy': True,
'groups': [ 'groups': [
'backup',
'debian-10', 'debian-10',
], ],
'bundles': [ 'bundles': [

View file

@ -2,7 +2,6 @@
'hostname': '162.55.188.157', 'hostname': '162.55.188.157',
'groups': [ 'groups': [
'archive', 'archive',
'backup',
'hetzner-cloud', 'hetzner-cloud',
'debian-10', 'debian-10',
'mailserver', 'mailserver',
@ -95,8 +94,7 @@
'installer': True, 'installer': True,
}, },
'vm': { 'vm': {
'cores': 2, 'cpu': 2,
'ram': 8096,
}, },
'wireguard': { 'wireguard': {
# ip r add 10.0.0.0/24 via 172.19.136.2 dev wg0 # ip r add 10.0.0.0/24 via 172.19.136.2 dev wg0
@ -109,7 +107,6 @@
'10.0.9.0/24', '10.0.9.0/24',
] ]
}, },
'netcup.secondary': {},
}, },
}, },
'zfs': { 'zfs': {

View file

@ -1,34 +0,0 @@
{
'hostname': '46.38.240.85',
'groups': [
'debian-10',
],
'bundles': [
'wireguard',
],
'metadata': {
'id': '890848b2-a900-4f74-ad5b-b811fbb4f0bc',
'network': {
'external': {
'interface': 'eth0',
'ipv4': '46.38.240.85/22',
'gateway4': '46.38.240.1',
'ipv6': '2a03:4000:7:534::2/64',
'gateway6': 'fe80::1',
}
},
'wireguard': {
'my_ip': '172.19.136.3/22',
'peers': {
'htz.mails': {
'route': [
'10.0.0.0/24',
'10.0.2.0/24',
'10.0.9.0/24',
'10.0.10.0/24',
],
},
},
},
},
}