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', }