59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
from shlex import quote
|
|
|
|
files = {
|
|
'/etc/samba/smb.conf': {
|
|
'content_type': 'mako',
|
|
'context': {
|
|
'shares': {
|
|
name: {
|
|
'comment': name,
|
|
'path': f'/var/lib/samba/usershares/{name}',
|
|
'valid users': name,
|
|
'public': 'no',
|
|
'writable': 'yes',
|
|
'browsable': 'yes',
|
|
}
|
|
for name, conf in node.metadata.get('samba/shares').items()
|
|
},
|
|
},
|
|
'needs': [
|
|
'pkg_apt:samba',
|
|
],
|
|
'triggers': [
|
|
'svc_systemd:smbd.service:restart',
|
|
],
|
|
},
|
|
}
|
|
|
|
directories = {
|
|
'/var/lib/samba/usershares': {
|
|
'mode': '1751',
|
|
},
|
|
}
|
|
|
|
|
|
svc_systemd = {
|
|
'smbd.service': {},
|
|
}
|
|
|
|
for name, conf in node.metadata.get('samba/shares').items():
|
|
quoted_password = quote(str(conf['password']))
|
|
actions[f'samba_password_{name}'] = {
|
|
'command': f"(echo {quoted_password}; echo {quoted_password}) | smbpasswd -s -a {name}",
|
|
'unless': f"echo {quoted_password} | smbclient -U {name} //localhost/{name} -c 'ls'",
|
|
'needs': [
|
|
f'user:{name}',
|
|
'svc_systemd:smbd.service:restart',
|
|
],
|
|
}
|
|
|
|
directories[f'/var/lib/samba/usershares/{name}'] = {
|
|
'owner': name,
|
|
'group': name,
|
|
'needs': [
|
|
f"zfs_dataset:{node.metadata.get('zfs/storage_classes/hdd')}/samba/{name}",
|
|
],
|
|
}
|
|
|
|
|
|
# TTMx36kcLbdkdgOqvxjlX03tLCjgeyXq
|