Compare commits
No commits in common. "581d7c5371cbac1c01850398442793e37ee558e1" and "1f93d3888e24cd1731f3ae1b7c47226e3fd6ca0a" have entirely different histories.
581d7c5371
...
1f93d3888e
2 changed files with 55 additions and 0 deletions
28
bundles/users/items.py
Normal file
28
bundles/users/items.py
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
for group, config in node.metadata.get('groups', {}).items():
|
||||||
|
groups[group] = config
|
||||||
|
|
||||||
|
for name, config in node.metadata.get('users').items():
|
||||||
|
directories[config['home']] = {
|
||||||
|
'owner': name,
|
||||||
|
'mode': '700',
|
||||||
|
}
|
||||||
|
|
||||||
|
files[f"{config['home']}/.ssh/id_{config['keytype']}"] = {
|
||||||
|
'content': config['privkey'] + '\n',
|
||||||
|
'owner': name,
|
||||||
|
'mode': '0600',
|
||||||
|
}
|
||||||
|
files[f"{config['home']}/.ssh/id_{config['keytype']}.pub"] = {
|
||||||
|
'content': config['pubkey'] + '\n',
|
||||||
|
'owner': name,
|
||||||
|
'mode': '0600',
|
||||||
|
}
|
||||||
|
files[config['home'] + '/.ssh/authorized_keys'] = {
|
||||||
|
'content': '\n'.join(sorted(config['authorized_keys'])) + '\n',
|
||||||
|
'owner': name,
|
||||||
|
'mode': '0600',
|
||||||
|
}
|
||||||
|
|
||||||
|
users[name] = config
|
||||||
|
for option in ['authorized_keys', 'authorized_users', 'privkey', 'pubkey', 'keytype']:
|
||||||
|
users[name].pop(option, None)
|
|
@ -1,5 +1,32 @@
|
||||||
from base64 import b64decode
|
from base64 import b64decode
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
'users': {
|
||||||
|
'root': {
|
||||||
|
'home': '/root',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'users',
|
||||||
|
)
|
||||||
|
def authorized_users(metadata):
|
||||||
|
users = {}
|
||||||
|
|
||||||
|
for name, config in metadata.get('users').items():
|
||||||
|
users[name] = {
|
||||||
|
'authorized_keys': [],
|
||||||
|
}
|
||||||
|
for authorized_user in config.get('authorized_users', []):
|
||||||
|
authorized_user_name, authorized_user_node = authorized_user.split('@')
|
||||||
|
users[name]['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(
|
||||||
|
|
Loading…
Reference in a new issue