diff options
Diffstat (limited to 'manifests/nas/share.pp')
| -rw-r--r-- | manifests/nas/share.pp | 59 | 
1 files changed, 59 insertions, 0 deletions
| diff --git a/manifests/nas/share.pp b/manifests/nas/share.pp new file mode 100644 index 0000000..e29ecbe --- /dev/null +++ b/manifests/nas/share.pp @@ -0,0 +1,59 @@ +# Share a folder pubicly using FTP, Samba, NFS, DLNA, etc. +define share( +  $description, +  $folder, +  $dlna_type          = '', +  $nfs_export_target  = '127.0.0.1', +  $nfs_export_options = 'ro,sync,no_subtree_check' +) { + +  # DLNA share +  if $dlna_type != '' { +    minidlna::share { $folder: +      type => $dlna_type, +    } +  } + +  # Samba share +  samba::server::share { $name: +    comment        => $description, +    path           => $folder, +    guest_only     => true, +    guest_ok       => true, +    browsable      => true, +    create_mask    => 0777, +    directory_mask => 0777, +  } + +  # 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, +    } +  } +} | 
