wip
This commit is contained in:
parent
275c6eb22b
commit
c1623595de
5 changed files with 55 additions and 1 deletions
17
bundles/mirror/metadata.py
Normal file
17
bundles/mirror/metadata.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
defaults = {
|
||||||
|
'mirror': {},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'systemd-timers',
|
||||||
|
)
|
||||||
|
def timers(metadata):
|
||||||
|
return {
|
||||||
|
'systemd-timers': {
|
||||||
|
f'mirror-{name}': {
|
||||||
|
'command': f"/usr/bin/scp -r -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null '{config['from']}' '{config['to']}'",
|
||||||
|
'when': 'hourly',
|
||||||
|
} for name, config in metadata.get('mirror').items()
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,5 +24,5 @@ for name, config in node.metadata.get('users').items():
|
||||||
}
|
}
|
||||||
|
|
||||||
users[name] = config
|
users[name] = config
|
||||||
for option in ['authorized_keys', 'privkey', 'pubkey', 'keytype']:
|
for option in ['authorized_keys', 'authorized_users', 'privkey', 'pubkey', 'keytype']:
|
||||||
users[name].pop(option, None)
|
users[name].pop(option, None)
|
||||||
|
|
|
@ -9,6 +9,29 @@ defaults = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'users',
|
||||||
|
)
|
||||||
|
def authorized_usersuser(metadata):
|
||||||
|
users = {}
|
||||||
|
|
||||||
|
for name, config in metadata.get('users').items():
|
||||||
|
for authorized_user in config.get('authorized_users', []):
|
||||||
|
authorized_user_name, authorized_user_node = authorized_user.split('@')
|
||||||
|
users\
|
||||||
|
.setdefault(name, {})\
|
||||||
|
.setdefault('authorized_keys', [])\
|
||||||
|
.append(
|
||||||
|
repo\
|
||||||
|
.get_node(authorized_user_node)\
|
||||||
|
.metadata\
|
||||||
|
.get(f'users/{authorized_user_name}/pubkey')
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
'users': users,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@metadata_reactor.provides(
|
@metadata_reactor.provides(
|
||||||
'users',
|
'users',
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
'gitea',
|
'gitea',
|
||||||
'grafana',
|
'grafana',
|
||||||
'influxdb2',
|
'influxdb2',
|
||||||
|
'mirror',
|
||||||
'postgresql',
|
'postgresql',
|
||||||
'redis',
|
'redis',
|
||||||
'wireguard',
|
'wireguard',
|
||||||
|
@ -18,6 +19,12 @@
|
||||||
],
|
],
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'id': 'af96709e-b13f-4965-a588-ef2cd476437a',
|
'id': 'af96709e-b13f-4965-a588-ef2cd476437a',
|
||||||
|
'mirror': {
|
||||||
|
'certs': {
|
||||||
|
'from': '10.0.10.2:/var/lib/dehydrated/certs',
|
||||||
|
'to': '/var/lib/dehydrated/certs',
|
||||||
|
},
|
||||||
|
},
|
||||||
'network': {
|
'network': {
|
||||||
'internal': {
|
'internal': {
|
||||||
'interface': 'enp1s0f0',
|
'interface': 'enp1s0f0',
|
||||||
|
|
|
@ -102,6 +102,13 @@
|
||||||
'version': '1.4.11',
|
'version': '1.4.11',
|
||||||
'installer': True,
|
'installer': True,
|
||||||
},
|
},
|
||||||
|
'users': {
|
||||||
|
'root': {
|
||||||
|
'authorized_users': [
|
||||||
|
'root@home.server',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
'vm': {
|
'vm': {
|
||||||
'cores': 2,
|
'cores': 2,
|
||||||
'ram': 8096,
|
'ram': 8096,
|
||||||
|
|
Loading…
Reference in a new issue