1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# Share a folder pubicly using FTP, Samba, NFS, DLNA, etc.
define nodo::nas::share(
$description,
$folder,
$owner = '',
$group = '',
$mode = '',
$dlna_type = '',
$nfs_export_target = '127.0.0.1',
$nfs_export_options = 'ro,sync,no_subtree_check',
$samba_guest_only = true,
$samba_guest_ok = true,
$samba_force_group = '',
$samba_read_only = '',
$samba_create_mask = '0644',
$samba_directory_mask = '0755'
) {
# DLNA share
if $dlna_type != '' {
minidlna::share { $folder:
type => $dlna_type,
}
}
# Samba share
samba::server::share { $name:
comment => $description,
path => $folder,
guest_only => $samba_guest_only,
guest_ok => $samba_guest_ok,
force_user => $samba_force_user ? {
'' => undef,
default => $samba_force_user,
},
force_group => $samba_force_group ? {
'' => undef,
default => $samba_force_group,
},
read_only => $samba_read_only ? {
'' => undef,
default => $samba_read_only,
},
create_mask => $samba_create_mask ? {
'' => undef,
default => $samba_create_mask,
},
directory_mask => $samba_directory_mask ? {
'' => undef,
default => $samba_directory_mask,
},
browsable => true,
}
# NFS export
nfs::export { $name:
export_directory => $folder,
export_target => $nfs_export_target,
export_options => $nfs_export_options,
}
# HTTP and FTP symlinks to media assets
file { [ "/var/www/data/${name}", "/home/ftp/${name}" ]:
ensure => $folder,
require => File['/var/www/data', '/home/ftp'],
}
# Avahi service
file { "/etc/avahi/services/nfs-${name}.service":
ensure => present,
owner => root,
group => root,
mode => 0644,
source => "puppet:///modules/site_avahi/services/nfs-${name}.service",
notify => Service['avahi-daemon'],
}
# Make sure basic media exist, no matter which disk is attached
$cache = hiera('nodo::media::folders', '')
if $cache != '' {
file { [ "${cache}/${name}" ]:
ensure => directory,
owner => $owner ? {
'' => undef,
default => $owner,
},
group => $group ? {
'' => undef,
default => $group,
},
mode => $mode ? {
'' => undef,
default => $mode,
},
}
}
}
|