36 lines
914 B
Python
36 lines
914 B
Python
directories = {}
|
|
users = {}
|
|
files = {}
|
|
groups = {}
|
|
|
|
pkg_apt = {
|
|
'fish': {},
|
|
'tmux': {},
|
|
}
|
|
|
|
for username, attrs in node.metadata['users'].items():
|
|
home = attrs.get('home', '/home/{}'.format(username))
|
|
|
|
if attrs.get('delete', False):
|
|
users[username] = {'delete': True}
|
|
directories[home] = {'delete': True}
|
|
|
|
else:
|
|
user = users.setdefault(username, {})
|
|
|
|
user['home'] = home
|
|
user['shell'] = attrs.get('shell', '/usr/bin/fish')
|
|
user['password'] = repo.vault.human_password_for('user {} on {}'.format(username, node.name))
|
|
|
|
directories[home] = {
|
|
'owner': username,
|
|
'mode': '0700',
|
|
}
|
|
|
|
if 'ssh_pubkey' in attrs:
|
|
files[home + '/.ssh/authorized_keys'] = {
|
|
'content': "\n".join(attrs['ssh_pubkey']),
|
|
'owner': username,
|
|
'mode': '0600',
|
|
}
|
|
|